Было бы проще, если бы таблица была правильно разбита на разделы, используя thead
и tbody
:
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>something</td>
</tr>
<tr>
<td>2</td>
<td>something else</td>
</tr>
</tbody>
</table>
Тогда было бы:
$("table.table > tbody > tr").remove();
Или, если вам нужно сохранить строку данных, которая идентифицируется текстом в первом столбце:
$("table.table > tbody > tr").filter(function() {
return $(this.firstElementChild).text().trim() != idToKeep;
}).remove();
Live Пример:
setTimeout(function() {
var idToKeep = 2;
$("table.table > tbody > tr").filter(function() {
return $(this.firstElementChild).text().trim() != idToKeep;
}).remove();
}, 800);
<table class="table">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>something</td>
</tr>
<tr>
<td>2</td>
<td>something else</td>
</tr>
</tbody>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Тем не менее, вам придется освободить первый ряд:
$("table.table tr:not(:first-child)").remove();
Или, если вам нужно сохранить строка данных, идентифицируемая по тексту в первом столбце и исключающая первую строку:
$("table.table tr").filter(function(index) {
return index !== 0 && $(this.firstElementChild).text().trim() != idToKeep;
}).remove();
setTimeout(function() {
var idToKeep = 2;
$("table.table tr").filter(function(index) {
return index !== 0 && $(this.firstElementChild).text().trim() != idToKeep;
}).remove();
}, 800);
<table class="table">
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<tr>
<td>1</td>
<td>something</td>
</tr>
<tr>
<td>2</td>
<td>something else</td>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Вам может быть интересно, почему я использовал комбинатор-потомок (пробел), а не дочерний комбинатор (>
) в этом, когда я использовал детский комбинатор в предыдущем. Причина в том, что браузер автоматически обернет ваши строки в элемент tbody
. Так что это также будет работать:
$("table.table > tbody > tr:not(:first-child)").remove();
Или если вам нужно сохранить строку данных, которая идентифицируется текстом в первом столбце, и исключить первую строку:
$("table.table > tbody > tr").filter(function(index) {
return index !== 0 && $(this.firstElementChild).text().trim() != idToKeep;
}).remove();
setTimeout(function() {
var idToKeep = 2;
$("table.table > tbody > tr").filter(function(index) {
return index !== 0 && $(this.firstElementChild).text().trim() != idToKeep;
}).remove();
}, 800);
<table class="table">
<tr>
<th>ID</th>
<th>Name</th>
</tr>
<tr>
<td>1</td>
<td>something</td>
</tr>
<tr>
<td>2</td>
<td>something else</td>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>