javascript - 如何将对象添加到 jquery 结果对象?

标签 javascript jquery

我不确定我在这里是否做错了什么,但我需要将多个对象的状态基于另一个对象的状态。所以我基本上是迭代 parent ,然后获取他们的 child ,然后迭代他们以获得他们的 child 等等。但是,我不知道如何将 jquery 对象添加到 jquery 结果对象。

我的代码看起来像这样(其中 bubbleDown 是所说的结果对象):

while (i < bubbleDown.length) {
    var curRow = bubbleDown[i];
    child = curRow.getAttribute('class') //etc
    parent = curRow.getAttribute('class') //etc
    bubbleDown.add($('.' + child + ':not(.' + parent.replace(' ', '.') + ')'));
    i++;
}

我隐藏了一些逻辑,因为它不适用于我的问题。无论如何,它不起作用,并不是因为 jquery 无法返回对象。有人可以帮忙吗?

最佳答案

最简单的方法是.add()已经接受了一个选择器,只需使用该重载并不断更新对对象的引用以使用 the one .add() returns :

var newBubbleDown = $(bubbleDown);
while (i < bubbleDown.length) {
  var curRow = bubbleDown[i];
  child = curRow.getAttribute('class') //etc
  parent = curRow.getAttribute('class') //etc
  newBubbleDown = newBubbleDown.add('.' + child + ':not(.' + parent.replace(' ', '.') + ')');
  i++;
}
//use newBubbleDown

我无法进一步简化它,因为我不确定你的外部逻辑,例如i 来自哪里,childparent 的用途等等。但只需调用 .add(selector) ,无需向其提供 jQuery 对象,就可以了。

我们在这里使用一个新对象,因为.add()返回对 jQuery对象(您没有使用的)的引用,因此每个.add() 添加元素,创建一个包含它们的 jQuery 对象,然后在下一个循环中将其丢弃。相反,您需要更新引用,以便它不断累积您想要的元素。在我的大多数项目中,我倾向于更改 .add() 实现以作用于当前数组,因为这种方式更有用,例如,可以使您的原始代码正常工作。

注意:将元素添加到 newBubbleDown jQuery 对象,但您的 :not() use 让我想知道这是否适合您的需求,在任何情况下它都不会删除任何元素,它只会找到与该选择器匹配的元素并将它们添加到数组中。如果需要排除数组中已有的元素,则需要 .filter() .

关于javascript - 如何将对象添加到 jquery 结果对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3228470/

相关文章:

javascript - 如何添加天数以获取当前日期的下一个日期(不含周末)

javascript - 定位分离的 DOM 树内存泄漏

javascript - knockout js - 部分模板更加干燥

javascript - 如何在 JavaScript 中使用媒体查询

jquery - Cordova iOS onResume 在启动时触发并导致应用程序崩溃

javascript - 使用 php 验证 html 表单

php - 如何从使用ajax的javascript函数获取值

Javascript 仅附加一种类型

javascript - jQuery nth-child() 在第二个 li 中插入 css 类

javascript - 在列表中前后循环