jQuery: Comment obtenir l'élément wrapper créé avec"wrapAll ()"?

Considérons le code suivant: (exemple en direct ici )

HTML:

<div class="a">Hello</div>
<div class="a">Stack</div>
<div class="a">Overflow</div>

CSS:

.wrapper {
    background-color: #777;
}

JS:

$(function() {
    var wrapper = $("<div class='wrapper'></div>");
    $(".a").wrapAll(wrapper);
    wrapper.css("border", "5px solid black"); // Doesn't work
});

Quelle serait la bonne façon d'obtenir le wrapper créé et de changer ses attributs ?

Note: Il y a d'autres éléments .wrapper dans le DOM, donc cela ne fonctionnera pas:

$(".wrapper").css("border", "5px solid black");

Je ne veux pas non plus donner un id unique au wrapper créé.

23
demandé sur Misha Moroshko 2011-08-07 16:32:30

3 réponses

Puisque vous venez d'envelopper les éléments, vous pouvez utiliser parent () pour obtenir les wrappers nouvellement insérés:

$(".a").wrapAll("<div class='wrapper'></div>")
       .parent().css("border", "5px solid black");
31
répondu Frédéric Hamidi 2011-08-07 12:47:25

L'objet jQuery stocké dans wrapper est cloné lorsque wrapAll est appelé, vous ne pouvez donc pas affecter les .wrappers qui ont été insérés dans le DOM en manipulant wrapper, Vous devez les sélectionner dans le document.

6
répondu karim79 2011-08-07 12:44:43
$(function() {
    var wrapper = $("<div class='wrapper'></div>");
    var wrapped = $(".a").wrapAll(wrapper);
    wrapped.css("border", "5px solid black");
});
-2
répondu Billy Moon 2011-08-07 12:38:21