web-dev-qa-db-fra.com

jQuery append () - retourne les éléments ajoutés

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);
171
psychotik

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.

246
SLaks
// 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);
39
karim79
var newElementsAppended = $(newHtml).appendTo("#myDiv");
newElementsAppended.effects("highlight", {}, 2000);
28
Thiago Belem

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.

DÉMO

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]"
9
AgelessEssence

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é.

0
aff