从表中删除除特定行之外的所有行

时间:2011-04-16 01:28:56

标签: javascript jquery

我想从表中删除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();

1 个答案:

答案 0 :(得分:8)

因为table元素的子元素是theadtfoottbody元素。 A tbody element is always created in the generated DOM,即使它没有在HTML代码中明确写出。

你也可以这样做:

$('.mytable tr').not('#row0').remove();

$('#row0').siblings().remove();