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

ero*_*orr 3 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>
Run Code Online (Sandbox Code Playgroud)

但是以下JQuery代码删除了所有行:

$('.mytable').children().not('#row0').remove();
Run Code Online (Sandbox Code Playgroud)

有人能解释为什么会这样吗?我认为id为'row0'的孩子会被排除在外,但显然情况并非如此.

我找到了另一种方法来做到这一点,但仍然好奇为什么上述方法不起作用:

$('.mytable').find('tr:not(#row0)').remove();
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 8

因为一个的子table元件是thead,tfoottbody元件.一个tbody元素总是在生成的DOM创建,即使它没有明确地写在HTML代码.

你也可以这样做:

$('.mytable tr').not('#row0').remove();
Run Code Online (Sandbox Code Playgroud)

要么

$('#row0').siblings().remove();
Run Code Online (Sandbox Code Playgroud)