如何删除所有<;tr>;从使用jquery的第一个表之外的表中
我有一个表,我想删除表中除第一个以外的所有如何删除所有<;tr>;从使用jquery的第一个表之外的表中,jquery,html,jquery-selectors,Jquery,Html,Jquery Selectors,我有一个表,我想删除表中除第一个以外的所有。我该怎么做 $('#myTable').find('tr').not(":first").remove(); 例如: 这将使用一个完全有效的CSS选择器获取所有表行,然后从索引1(第二行)开始获取集合,最后删除行 有效的CSS选择器非常重要,因为它将允许jQuery/Sizzle成功地利用原生的querySelectorAll方法,这将提供非常快速的选择 querySelectorAll在许多浏览器中都受支持,包括IE8 编辑: 虽然您要求使用j
。我该怎么做
$('#myTable').find('tr').not(":first").remove();
例如:
这将使用一个完全有效的CSS选择器获取所有表行,然后从索引1
(第二行)开始获取集合,最后删除行
有效的CSS选择器非常重要,因为它将允许jQuery/Sizzle成功地利用原生的querySelectorAll
方法,这将提供非常快速的选择
querySelectorAll
在许多浏览器中都受支持,包括IE8
编辑: 虽然您要求使用jQuery解决方案,但我认为我应该使用本机DOM API解决方案,因为它的执行速度比其他任何解决方案都快,而且非常简单
var rows = document.getElementById('theTable').rows;
while( rows[1] )
rows[1].parentNode.removeChild( rows[1] );
这里有几种方法,最简单的是使用选择器,如下所示:
$('#tableID tr:gt(0)').remove();
使用:
$('table:first child~tr')。remove()
例如:
(感谢Stefan Kendall!我不知道jsfiddle。)第一排有什么特别的意义吗?我要说的是,第一行很可能是包含列标题的行 如果是这样,一个简单的选择是将第一行放在
中,将所有正文行放在
中。然后你可以简单地做:
$('#myTable tbody tr').remove();
这也为您的HTML提供了更多的语义含义。我想我会赶时髦,提供一些解决方案: 如果第一行使用的是
thead
,只需将tr
s放入tbody
:
$('#myTable tbody tr').remove();
如果未使用thead
,则可以通过多种方式获取后续行。我强烈建议浏览一下
以下是一些如何删除行的示例:
$('#myTable tr+tr').remove()代码>
$('#myTable tr:gt(0)')。删除()代码>
$('myTable tr:not(:first child')。删除()代码>
$(“#myTable”).find('tr').not(':first child').remove()代码>
$('#myTable tr:first child').sides().remove()代码>
filter
将允许您调用end
并继续从父元素链接
您必须进行一些单元测试,看看这些方法中哪一种最快,或者如果不那么重要,就不进行测试。第一行在语义上是标题吗?如果是这样的话,最好稍微修改一下标记,这样会产生更简单的脚本。我在测试你的肯定,你站得对,但后来的浏览器似乎喜欢新的css3选择器=)@Couto:Good point。
'table:first child~tr'
在大多数(可能是所有)情况下都将是一个有效的选择器,但如果有多个
元素,它在技术上可能无法满足要求。如果:gt()
或:not(:first)
是有效的选择器,那就太好了。这些都是很好的创造性解决方案,但是如果有多个
,数字1、3、4和5将无法提供所需的结果。虽然我承认这种情况不太可能发生。@patrick dw我想这是真的,但如果他们使用多个tbody
s,他们很可能使用thead
,在这种情况下,第一个示例将是最佳选择。好主意。另一个SO帖子的替代方法:$('someTableSelector tr:not(:first')。remove()代码>
$('#myTable tbody tr').remove();