2012-07-24 87 views
1

我想建立一個使用add()的jQuery集合,但是我的實現並沒有向集合中添加元素。jQuery Add()不工作

var questionPath = $(); // create empty set 
    var selectedRuleElement = $(event.currentTarget); 
    questionPath.add(selectedRuleElement); //no element is added to set here! 
    selectedRuleElement.find('li.property-value-node').each(function() { 
     var questionId = $(this).attr('data-parent-id'); 
     questionPath.add($('#' + questionId)); // or here! 
    }); 
    return questionPath; 

上述兩個add()行都被賦予一個有效的元素作爲參數。有人能告訴我將元素添加到jQuery集合的正確方法嗎?

+0

+1 - 爲比維斯 – undefined 2012-07-24 17:49:58

回答

3

與字符串類似,jQuery對象是不可變的,所以你需要重新賦值返回的值。否則,您將丟棄由.add()返回的值,並且questionPath保持不變。

questionPath = questionPath.add(selectedRuleElement); 
+0

真棒。謝謝! – Nick 2012-07-24 19:12:24

0

你可以使用jQuery.merge()

var questionPath = $(); // create empty set 
var selectedRuleElement = $(event.currentTarget); 
$.merge(questionPath,selectedRuleElement); //merging 
selectedRuleElement.find('li.property-value-node').each(function() { 
    var questionId = $(this).attr('data-parent-id'); 
    $.merge(questionPath,$('#' + questionId)); //merging 
}); 
return questionPath; 
+0

呃,沒那麼多。 '$ .merge'實際上是指數組,而不是jQuery對象(它們是數組類)。 – 2012-07-24 17:54:23

+0

@MattBall [我沒有看到任何問題。](http://jsfiddle.net/WXFAH/) – Engineer 2012-07-24 17:58:50