J'utilise jQuery.append () pour ajouter des éléments de manière dynamique. Existe-t-il un moyen d’obtenir une collection jQuery ou un tableau de ces éléments récemment insérés?
Donc je veux faire ceci:
$("#myDiv").append(newHtml);
var newElementsAppended = // answer to the question I'm asking
newElementsAppended.effects("highlight", {}, 2000);
Il y a une manière plus simple de faire ceci:
$(newHtml).appendTo('#myDiv').effects(...);
Pour changer la situation, créez d'abord newHtml
avec jQuery(html [, ownerDocument ])
, puis utilisez appendTo(target)
(notez le bit "To
") pour l'ajouter à la fin de #mydiv
.
Parce que vous avez maintenant début avec $(newHtml)
, le résultat final de appendTo('#myDiv')
est ce nouveau bit de HTML, et l'appel .effects(...)
sera également sur ce nouveau bit de HTML.
// wrap it in jQuery, now it's a collection
var $elements = $(someHTML);
// append to the DOM
$("#myDiv").append($elements);
// do stuff, using the initial reference
$elements.effects("highlight", {}, 2000);
var newElementsAppended = $(newHtml).appendTo("#myDiv");
newElementsAppended.effects("highlight", {}, 2000);
Un petit rappel, lorsque des éléments sont ajoutés de manière dynamique, des fonctions telles que append()
, appendTo()
, prepend()
ou prependTo()
renvoient un objet jQuery, pas l'élément HTML DOM.
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]"
Je pense que vous pourriez faire quelque chose comme ça:
var $child = $("#parentId").append("<div></div>").children("div:last-child");
Le parent #parentId est renvoyé de l'ajout, ajoutez-y une requête enfants jquery pour obtenir le dernier enfant div inséré.
$ child est alors le div enfant jQuery enveloppé qui a été ajouté.