我有一个包含许多行(+50)和单元格(+50)的表格。现在我想用jQuery删除 n 第一个或最后一个单元格。目前我有以下代码:
var n = 10;
var last = true;
for (var i = 0; i < n; i++) {
table.find('tr').each(function() {
if(last)
$(this).find('td:last').remove();
else
$(this).find('td:first').remove();
});
}
注意:table
是一个jQuery元素。
代码有效,但当我有一个包含50行50个单元格的表时,执行非常慢并删除最后10个单元格。任何想法如何优化代码?
编辑: 我也添加了第一个条款。
答案 0 :(得分:27)
我认为最佳可能是使用nth-last-child
。
table.find("tr td:nth-last-child(-n+10)").remove();
好处是将使用内部浏览器CSS选择器引擎(或者在IE jQuery的情况下会有所帮助:) 这是删除最后3个元素的demo。在你的情况下将它改为10。
答案 1 :(得分:-1)
您可以使用Greater Than选择器。它选择匹配集中索引大于索引的所有元素。 首先计算元素数量(td)。减去10,然后使用大于选择器。
答案 2 :(得分:-3)
或者你可以试试这个。
var n = 3;
var len = table.find('tr').length;
table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();