jQuery删除除第一行以外的所有表行

使用jQuery,如何删除表中除第一行外的所有行?这是我第一次尝试使用索引选择器。如果我正确地理解了这些例子,以下应该可以工作:

$(some table selector).remove("tr:gt(0)");

我将其理解为“在jQuery对象中包装一些表,然后删除所有'tr'元素(行),其中这些行的元素索引大于零”。实际上,它执行时不会产生错误,但不会从表中删除任何行。

我错过了什么,我该如何修复?当然,我可以直接使用javascript,但我有这么多的乐趣与jQuery,我想用jQuery来解决这个问题。

301096 次浏览

这应该可以工作:

$(document).ready(function() {
$("someTableSelector").find("tr:gt(0)").remove();
});

你的选择器不需要在你的移除中。

它应该看起来像这样:

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

这意味着选择表中除ID为tableID的第一行外的每一行,并将它们从DOM中删除。

我认为考虑到意图,这更具有可读性:

$('someTableSelector').children( 'tr:not(:first)' ).remove();

使用子元素还可以通过限制搜索深度来解决第一行包含表的情况。

如果你有一个TBODY元素,你可以这样做:

$("someTableSelector > tbody:last").children().remove();

如果你有THEAD或TFOOT元素,你需要做一些不同的事情。

如果是我,我可能会把它归结为一个选择器:

$('someTableSelector tr:not(:first)').remove();

另一种实现方法是使用jQuery的empty()函数和表中的thead和tbody元素。

表格的例子:

<table id="tableId">
<thead>
<tr><th>Col1</th><th>Col2</th></tr>
</thead>
<tbody>
<tr><td>some</td><td>content</td></tr>
<tr><td>to be</td><td>removed</td></tr>
</tbody>
</table>

jQuery命令:

$("#tableId > tbody").empty();

这将删除表的tbody元素中包含的每一行,并将头部元素保留在应有的位置。当您只想刷新表的内容时,它可能很有用。

考虑一个id为tbl的表:jQuery代码将是:

$('#tbl tr:not(:first)').remove();
$('#table tr').slice(1).remove();

我记得这个“切片”比所有其他方法都要快,所以就放在这里吧。

对不起,这是很晚的回复。

我发现删除任何行(和所有其他行通过迭代)的最简单的方法是这样的

$ (' # rowid ', ' # tableid ') .remove ();

剩下的很简单。



$("#p-items").find( 'tr.row-items' ).remove();

删除所有行,除了第一行(除了头),使用下面的代码:

$("#dataTable tr:gt(1)").remove();

包装在函数中:

function remove_rows(tablename) {
$(tablename).find("tr:gt(0)").remove();
}

然后叫它:

remove_rows('#table1');
remove_rows('#table2');

效果很好

$("#myTable tbody").children( 'tr:not(:first)' ).html("");

这在我的情况下,以以下方式工作,工作很好

$("#compositeTable").find("tr:gt(1)").remove();

最简单的方法:

$("#mytable").find($("tr")).slice(1).remove()

-第一个引用表
-获取元素列表并切片并删除列表中所选的元素