如何使用jquery从表中删除除第一个之外的所有
我有一个表,我想删除除第一个表之外的所有表的
这里有几种方法,最简洁的是使用:gt()
选择器,如下所示:
$('#tableID tr:gt(0)').remove();
第一排有特殊意义吗? 我要走出去,说第一排可能是包含列标题的行。
如果是这样,一个简单的选择是将第一行放在
,将所有主体行放在
。 然后你可以简单地做:
$('#myTable tbody tr').remove();
这也为您的HTML提供了更多的语义含义。
我想我会加入这个潮流并提供一些解决方案:
如果你在第一行使用thead
,只需将tr
放在tbody
:
$('#myTable tbody tr').remove();
如果您不使用thead
,则可以通过多种方式获取后续行。 我强烈建议查看jQuery api
以下是一些如何删除行的示例:
-
$('#myTable tr + tr').remove();
-
$('#myTable tr:gt(0)').remove();
-
$('#myTable tr:not(:first-child)').remove();
-
$('#myTable').find('tr').not(':first-child').remove();
-
$('#myTable tr:first-child').siblings().remove();
真的,它取决于你想要在你的选择器中的创意,以及你的意图。 我没有提供filter示例,但使用filter
将允许您调用end
并继续从父元素链接。
您将不得不进行一些unit testing,以查看哪些方法最快,或者如果不重要则不要。
$('#theTable tr').slice(1).remove();
这使用一个完全有效的CSS选择器来获取所有表行,然后从索引1
(第二行)开始获取集合的.slice()
),最后调用.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] );
使用下一个兄弟选择器 :
$(’table:first-child~tr’)。remove();
示例: http : //jsfiddle.net/TwqN3/2/ (感谢Stefan Kendall!我不知道jsfiddle。)