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.