JQuery append() - возвращает добавленные элементы

Я использую jQuery.append(), чтобы добавить некоторые элементы динамически. Есть ли способ получить коллекцию jQuery или массив этих вновь вставленных элементов?

Итак, я хочу сделать это:

$("#myDiv").append(newHtml);
var newElementsAppended = // answer to the question I'm asking
newElementsAppended.effects("highlight", {}, 2000);

Ответ 1

Здесь есть более простой способ:

$(newHtml).appendTo('#myDiv').effects(...);

Это приводит к тому, что сначала создается newHtml с jQuery(html [, ownerDocument ]), а затем с помощью appendTo(target) (обратите внимание на бит To), чтобы добавить его в конец #mydiv.

Поскольку теперь вы начинаете с $(newHtml), конечный результат appendTo('#myDiv') заключается в том, что новый бит html и вызов .effects(...) будут на этом новом бит html тоже.

Ответ 2

// wrap it in jQuery, now it a collection
var $elements = $(someHTML);

// append to the DOM
$("#myDiv").append($elements);

// do stuff, using the initial reference
$elements.effects("highlight", {}, 2000);

Ответ 3

var newElementsAppended = $(newHtml).appendTo("#myDiv");
newElementsAppended.effects("highlight", {}, 2000);

Ответ 4

Небольшое напоминание, когда элементы добавляются динамически, функции типа append(), appendTo(), prepend() или prependTo() возвращают объект jQuery, а не элемент HTML DOM.

DEMO

var container=$("div.container").get(0),
    htmlA="<div class=children>A</div>",
    htmlB="<div class=children>B</div>";

// jQuery object
alert( $(container).append(htmlA) ); // outputs "[object Object]"

// HTML DOM element
alert( $(container).append(htmlB).get(0) ); // outputs "[object HTMLDivElement]"

Ответ 5

Я думаю, вы могли бы сделать что-то вроде этого:

var $child = $("#parentId").append("<div></div>").children("div:last-child");

Родительский #parentId возвращается из append, поэтому добавьте к нему запрос jquery children, чтобы вставить последний дочерний div.

$child - это дочерний дочерний div, который был добавлен в jquery.