代码之家  ›  专栏  ›  技术社区  ›  C Bauer

如何向jquery结果对象添加对象?

  •  0
  • C Bauer  · 技术社区  · 14 年前

    我不确定我在这里是否做错了什么,但是我需要根据另一个对象的状态来判断几个对象的状态。所以我基本上是迭代父对象,然后得到它们的子对象,然后迭代它们得到它们的子对象等等。但是,我不知道如何将jquery对象添加到jquery result对象上。

    我的代码是这样的(bubbleDown是result object):

    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++;
    }
    

    2 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    最简单的方法是 .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 来自,什么 child parent 用于等,但只需打电话 .add(selector) ,而不向其提供jQuery对象,您就可以完成所有设置。

    我们用了一个新的物体 返回对 新的 jQuery对象(您不使用的对象),因此 添加元素,创建包含它们的jQuery对象,然后在下一个循环中丢弃。相反,您需要更新引用,以便它不断累积您想要的元素。我倾向于改变主意 在我的大多数项目中,实现对当前数组进行操作,因为这样做更有用(例如,这样可以使原始代码正常工作)。

    这将 只有 将元素添加到 newBubbleDown jQuery对象,但是 :not() .filter() .

        2
  •  0
  •   helle    14 年前

    必须对jquery对象项执行此操作:

    var curRow = $(bubbleDown[i]);
    

    bubbleDown.each(function(index){
        var child = $(this).attr('class')...
        ...
        bubbleDown.add(...);
    });
    

    使用 var 例如,初始化变量以避免IE出现问题。

    推荐文章