如何以最佳方式使用jQuery删除第一个或最后一个元素的'n'个数?

时间:2012-02-25 10:11:50

标签: jquery html performance dom

我有一个包含许多行(+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个单元格。任何想法如何优化代码?

编辑: 我也添加了第一个条款。

3 个答案:

答案 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();​