【问题标题】:Removing element by EQ filtering doesn't remove the element from jQuery Object通过 EQ 过滤删除元素不会从 jQuery 对象中删除元素
【发布时间】:2013-08-14 11:55:17
【问题描述】:

我使用这段代码来匹配元素列表:

var previewItems = preview.find('.items').children().not('.heads');

一切正常,但是当我尝试通过选择它的 EQ 来删除其中一项时,在它从 DOM 中删除后,它保留在匹配元素的 jQuery 对象中。

previewItems.eq(index).remove();
alert(previewItems.eq(index)); // [object Object]

为什么 jQuery 将元素保留在匹配元素的组中?

【问题讨论】:

  • 记住 jQuery 对象被认为是不可变的。即使add() 构建并返回一个新的jQuery 对象,它也不会更新现有的。同样,filter()(和slice())允许您构建一个新的 jQuery 对象,而不需要原始元素中的一些元素。

标签: jquery object


【解决方案1】:

为什么 jQuery 将元素保留在匹配元素的组中?

如果您想在删除它后对其进行处理。 remove 从 DOM 中删除元素,但您可能还想进一步做一些事情(例如在 DOM 中的其他位置添加它或从中检索信息)。

您可以使用 slicenotfilter 将其从集合中删除(或更准确地说:您可以获得一个具有所有相同元素的 new 对象,除了slice/not):

previewItems.eq(index).remove();
previewItems = previewItems.not(previewItems[index]);

【讨论】:

    猜你喜欢
    • 2013-07-18
    • 2022-08-17
    • 2014-05-05
    • 2018-01-17
    • 2022-01-14
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多