如何使用jquery从第一个表中删除所有表

时间:2011-01-03 05:08:22

标签: jquery html jquery-selectors

我有一张桌子,我想删除除第一张桌子以外的所有<tr>桌子。我怎么能这样做??

6 个答案:

答案 0 :(得分:6)

第一行有特殊含义吗?我要走出去,说第一行可能是包含列标题的行。

如果是这样,一个简单的选择是将第一行放在<thead>中,将所有正文行放在<tbody>中。然后你可以简单地做:

$('#myTable tbody tr').remove();

这也为您的HTML提供了更多的语义含义。

答案 1 :(得分:5)

这里有几种方法,最简洁的就是使用:gt()选择器,如下所示:

$('#tableID tr:gt(0)').remove();

答案 2 :(得分:3)

$('#theTable tr').slice(1).remove();

这使用一个完全有效的CSS选择器来获取所有表行,然后从索引1(第二行)开始获取集合的a .slice(),最后删除calls .remove()行。

有效的CSS选择器很重要,因为它允许jQuery / Sizzle成功使用原生querySelectorAll方法,这将提供极快的选择。

许多浏览器都支持

querySelectorAll,包括IE8


修改

虽然您要求使用jQuery解决方案,但我认为我会使用本机DOM API解决方案,因为它的执行速度比其他任何方式都快,而且非常简单。

var rows = document.getElementById('theTable').rows;

while( rows[1] )
    rows[1].parentNode.removeChild( rows[1] );

答案 3 :(得分:3)

我想我会加入这个潮流并提供一些解决方案:

如果您在第一行使用thead,只需将tr放入tbody

$('#myTable tbody tr').remove();

如果您没有使用thead,则可以通过多种方式获取后续行。我强烈建议您浏览jQuery api

以下是一些如何删除行的示例:

  1. $('#myTable tr + tr').remove();
  2. $('#myTable tr:gt(0)').remove();
  3. $('#myTable tr:not(:first-child)').remove();
  4. $('#myTable').find('tr').not(':first-child').remove();
  5. $('#myTable tr:first-child').siblings().remove();
  6. 实际上,这取决于您希望在选择器中的创意,以及您的意图。我没有提供过滤器示例,但使用filter将允许您调用end并继续从父元素链接。

    你必须做一些单元测试才能看出哪些方法最快,或者如果它不重要则不要。

答案 4 :(得分:1)

$('#myTable').find('tr').not(":first").remove();

示例:

http://jsfiddle.net/TwqN3/

答案 5 :(得分:0)

使用next siblings selector

  

$('table:first-child~tr')。remove();

实施例: http://jsfiddle.net/TwqN3/2/ (感谢Stefan Kendall!我不知道jsfiddle。)