我想从表中删除id为'row0'的行之外的所有行:
<table class="mytable">
<tr id="row0" class="myrow">
<td>aaa</td>
</tr>
<tr class="myrow">
<td>bbb</td>
</tr>
<tr class="myrow">
<td>ccc</td>
</tr>
</table>
但是以下JQuery代码会删除所有行:
$('.mytable').children().not('#row0').remove();
有人可以解释为什么会这样吗?我认为id为'row0'的孩子会被排除在外,但显然事实并非如此。
我找到了另一种方法,但仍然很好奇为什么上述方法不起作用:
$('.mytable').find('tr:not(#row0)').remove();
答案 0 :(得分:8)
因为table
元素的子元素是thead
,tfoot
或tbody
元素。 A tbody
element is always created in the generated DOM,即使它没有在HTML代码中明确写出。
你也可以这样做:
$('.mytable tr').not('#row0').remove();
或
$('#row0').siblings().remove();