2013-02-21 56 views
0

我有一個選擇器可以獲取一些項目,並且我想將一個元素添加到該堆棧。這不是pushStack的用途嗎?將DOM元素添加到jQuery堆棧數組

的HTML:

<div id="container"> 
    <div class="color-me">Line 1</div> 
    <div class="color-me">Line 2</div> 
</div> 

的JavaScript:

var $divs = $('.color-me'); 

var $generatedDiv = $('<div></div>', { 
    'class': 'color-me', 
    'text': 'Line 3' 
}).appendTo($('#container')); 

$divs.pushStack($generatedDiv); 

// Shouldn't the $generatedDiv be in the $divs jQuery stack now? 
$divs.css('color', 'red'); 

的jsfiddle:http://jsfiddle.net/bGDxw/

+0

在你的情況,我認爲你在尋找'加()'。 – BenM 2013-02-21 23:14:26

+0

我相信這將有助於http://stackoverflow.com/questions/4399055/jquery-pushstack – 2013-02-21 23:20:57

+0

我也喜歡http://stackoverflow.com/a/10197824/68146 – Coronus 2013-02-21 23:25:39

回答

1

這聽起來像你想要什麼。新增()。取而代之的

$divs.pushStack($generatedDiv); 

嘗試

$divs = $divs.add($generatedDiv); 
2

pushStack確實將它們添加到jQuery堆棧中,但那不是你在那裏處理的。你正在處理一組jQuery對象。

其結果是,你需要使用add()功能:

說明:添加元素到匹配的元素。

例如:

var $divs = $('.color-me'); 

var $generatedDiv = $('<div />', { 
    'class': 'color-me', 
    'text': 'Line 3' 
}).appendTo($('#container')); 

$divs = $divs.add($generatedDiv); 
$divs.css('color', 'red'); 
+0

聽起來很合理,但似乎沒有工作:http ://jsfiddle.net/bGDxw/1/ – Bart 2013-02-21 23:18:20

+2

.add()返回一個新的集合。你需要做$ divs = $ divs.add($ generatedDiv) – Coronus 2013-02-21 23:19:51

+0

的確,請檢查我的答案:) http://jsfiddle.net/bGDxw/3/ – BenM 2013-02-21 23:21:13