jQuery附加到jQuery变量而不是DOM元素

时间:2013-03-27 18:01:24

标签: jquery

是否可以附加到jQuery变量?

像这样$($tnail).appendTo($collection);

我需要优化昂贵的DOM修改并希望一次完成所有操作。

类似的东西:

    var $collection;

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

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

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

    });

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

2 个答案:

答案 0 :(得分: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包装的div,所以它已经有appendTo方法。更多性能优势!

编辑:正如凯文指出的那样,你无法附加到一个空的jQuery对象。在内部,jQuery使用空文档片段,但它不会通过它的API公开它。所以我改变了我的解决方案来创建一个虚拟元素,然后只将它的内容附加到#Container

答案 1 :(得分:1)

您实际上并不想将元素追加到$ collection,而是想将它们添加到它。

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

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

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

});