2013-03-27 91 views
0

是否有可能附加到jQuery變量?jQuery附加到jQuery變量,而不是DOM元素

成才這樣$($tnail).appendTo($collection);

我需要優化昂貴的DOM修改和希望一次做這一切。

是這樣的:

var $collection; 

$.each(items, function (i, item) { 

     var $tnail = $("<div></div>"); 

     $($tnail).appendTo($collection); 

    }); 

    $($collection).appendTo("#Container"); 
+0

在你的代碼中'$ collection'應該是一個jQuery對象。 – undefined 2013-03-27 18:02:39

+0

如果你真的想優化,你會做[**這**](http://jsfiddle.net/hPjJS/4/)! – adeneo 2013-03-27 18:18:44

回答

1

是的!你只需要確保$collection是一個jQuery對象:

var $collection = $('<x/>'); 

$.each(items, function (i, item) { 

    var $tnail = $("<div></div>"); 

    $tnail.appendTo($collection); 

}); 

$($collection.html()).appendTo("#Container"); 

也已經得到了2位,其中你在一個新的jQuery呼叫裹jQuery對象:$tnail已經是一個jQuery包裹格,所以它已經方法appendTo。更多性能優勢!

編輯:正如凱文指出,你不能追加到一個空的jQuery對象。在內部,jQuery使用空白文檔片段,但它不通過它的API公開。所以我改變了我的解決方案來創建一個虛擬元素,然後只將其內容附加到#Container

+1

我不確定這段代碼的結果是什麼,'$ collection'不包含'$ tnail'要追加的任何元素。我希望它什麼都不做 – 2013-03-27 18:09:05

+0

你是對的。編輯來補償。 – Barney 2013-03-27 18:22:46

1

您實際上不想將元素附加到$ collection,您想將它們添加到它。

var $collection = $(); // must be a jquery object 
$.each(items, function (i, item) { 

    var $tnail = $("<div></div>"); 

    // add to collection 
    $collection.add($tnail); 

});