【问题标题】:How to remove the last element from JQuery array?如何从 JQuery 数组中删除最后一个元素?
【发布时间】:2014-02-11 10:07:40
【问题描述】:

我想将一些 DOM 元素选择到一个克隆对象中,然后我想删除最后一项。在 Chrome 控制台中尝试后,我看到克隆的长度没有减少。

Chrome 控制台示例:

crumbs =  $("span",$("div[style='width:390px;background-color:white;'")[0]).clone();

jQuery.fn.jQuery.init[114]

crumbs.last().remove()

[​…​​​]

crumbs.length

114

如您所见,长度仍然是 114 个元素。我错过了什么?

【问题讨论】:

    标签: javascript jquery arrays element


    【解决方案1】:

    crumbs.last().remove() 从 DOM 中移除最后一个匹配的元素,它不会从 jQuery 对象中移除它。

    要从 jQuery 对象中移除一个元素¹,请使用 slice:

    var withoutLastOne = crumbs.slice(0, -1);
    

    ¹ 实际上,这将创建一个与少一个元素匹配的新对象,而不是修改现有对象。您通常不会关心区别,但应该意识到这一点。

    【讨论】:

      【解决方案2】:

      要从数组中删除最后一个元素,您也可以使用以下代码。

      var arr = ["item1", "item2", "item3", "item4"];
      arr.pop();
      

      Demo

      【讨论】:

      • 这不起作用,因为我正在对 JQuery 对象进行操作,这不是真正的 JavaScript 数组。没有 pop() 方法。
      【解决方案3】:

      正如人们所说,.remove() 从 DOM 中删除元素。除了在最终结果上使用slice 之外,另一种选择是在克隆元素之前使用 jquery 的过滤:

      crumbs =  $("span",$("div[style='width:390px;background-color:white;'")[0]).not(':last').clone();
      

      【讨论】:

      • 在这种情况下不是一个好主意,因为 jQuery 需要实际测试每个元素是否匹配 :last 过滤器。这不是必需的,因为在这里我们预先知道哪些元素匹配,哪些不匹配。只是要记住的事情。
      猜你喜欢
      • 2014-12-09
      • 2012-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      相关资源
      最近更新 更多