使用jQuery,如何删除表中除第一行之外的所有行?这是我第一次尝试使用索引选择器.如果我正确理解了这些示例,则以下内容应该有效:
$(some table selector).remove("tr:gt(0)");
我将其读作"在jQuery对象中包装一些表,然后删除所有'tr'元素(行),其中这些行的元素索引大于零".实际上,它会在不生成错误的情况下执行,但不会从表中删除任何行.
我错过了什么,我该如何解决这个问题?当然,我可以使用直接的javascript,但我对jQuery非常有趣,我想用jQuery解决这个问题.
这应该工作:
$(document).ready(function() { $("someTableSelector").find("tr:gt(0)").remove(); });
我认为这意味着更具可读性:
$('someTableSelector').children( 'tr:not(:first)' ).remove();
使用子项还可以通过限制搜索的深度来处理第一行包含表的情况.
如果您有TBODY元素,则可以执行以下操作:
$("someTableSelector > tbody:last").children().remove();
如果你有THEAD或TFOOT元素,你需要做一些不同的事情.
另一种方法是使用jQuery的empty()函数和表中的thead和tbody元素.
表的示例:
Col1 | Col2 |
---|---|
some | content |
to be | removed |
和jQuery命令:
$("#tableId > tbody").empty();
这将删除表中tbody元素中包含的每一行,并将thead元素保留在标题所在的位置.当您只想刷新表的内容时,它会很有用.
如果是我,我可能会把它归结为一个选择器:
$('someTableSelector tr:not(:first)').remove();
您的选择器不需要在您的删除内.
它应该看起来像:
$("#tableID tr:gt(0)").remove();
这意味着选择除表中ID为tableID的第一行以外的每一行,并从DOM中删除它们.
考虑一个带有id的表tbl
:jQuery代码将是:
$('#tbl tr:not(:first)').remove();
$('#table tr').slice(1).remove();
我记得遇到过'切片'比其他所有方法都要快,所以只需把它放在这里.