【问题标题】:How to remove the 'n' number of first or last elements with jQuery in an optimal way?如何以最佳方式使用jQuery删除'n'个第一个或最后一个元素?
【发布时间】:2012-03-15 15:10:23
【问题描述】:

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

编辑:我也添加了第一个子句。

【问题讨论】:

    标签: jquery html performance dom


    【解决方案1】:

    我认为最好的方法是使用nth-last-child

    table.find("tr td:nth-last-child(-n+10)").remove();​
    

    好处是将使用内部浏览器 CSS 选择器引擎(或者在 IE 的情况下 jQuery 会有所帮助:) 这是 demo 删除最后 3 个元素。根据您的情况将其更改为 10。

    【讨论】:

    • n-th-last-child operator 的用法非常巧妙,我喜欢 :)
    • 这太棒了!我喜欢它...它小巧、优雅且性能卓越!
    【解决方案2】:

    您可以使用Greater Than 选择器。它选择匹配集中索引大于索引的所有元素。 首先计算元素的数量(td)。减去 10,然后使用大于选择器。

    【讨论】:

      【解决方案3】:

      或者你可以试试这个。

      var n = 3;
      var len = table.find('tr').length;
      table.find('tr:gt(' + (len - n - 1) + ')').find('td:last').remove();​
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        • 2011-06-06
        相关资源
        最近更新 更多