Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除所有<;tr>;从使用jquery的第一个表之外的表中_Jquery_Html_Jquery Selectors - Fatal编程技术网

如何删除所有<;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();