0

是否可以附加到 jQuery 变量?

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

我需要优化代价高昂的 DOM 修改,并且想一次性完成。

像这样的东西:

    var $collection;

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

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

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

    });

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

2 回答 2

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.

于 2013-03-27T18:04:04.100 回答
1

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

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

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

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

});
于 2013-03-27T18:07:32.027 回答