2011-08-07 22 views
22

Aşağıdaki kodu göz önünde bulundurun: (canlı örneği here)jQuery: "wrapAll()" ile oluşturulan sarmalayıcı öğesi nasıl alınır?

HTML:

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

CSS:

.wrapper { 
    background-color: #777; 
} 

JS: doğru yol ne olurdu

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

oluşturulan sarmalayıcıyı al ve özelliklerini değiştir

Not: Orada DOM diğer .wrapper unsurlarıdır, dolayısıyla bu işe yaramaz:

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

Ben de oluşturulan sarmalayıcıya bir benzersiz id vermek istemiyoruz. Sadece elemanları sarılmış yana

cevap

29

, yeni eklenen sarma elde etmek için parent() kullanabilir:

$(".a").wrapAll("<div class='wrapper'></div>") 
     .parent().css("border", "5px solid black"); 
+0

@Matthew, 'wrapAll()' sarılmış öğeyi döndürür. [Bu keman] 'a bakın (http://jsfiddle.net/2e2WL/),' DI 'diyecek ve 'P' değil. –

-2
$(function() { 
    var wrapper = $("<div class='wrapper'></div>"); 
    var wrapped = $(".a").wrapAll(wrapper); 
    wrapped.css("border", "5px solid black"); 
}); 
+0

Bu nasıl işe yaramıyor, üzgünüm. WrapAll() 'ın nasıl çalıştığını açıklamak için – func0der

5

çağrılan zaman wrapAll Eğer etkilemez böylece wrapper saklanan jQuery nesne klonlanmış alır wrapper'u manipüle ederek DOM'a eklenmiş olan .wrappers, bunları belgedeki seçmeniz gerekir.

+0

+1, ancak sorumu yanıtlamıyor. –

+0

@Misha - Ben Frederic'in bunu zaten yapmış olduğunu düşündüm, sadece bir nokta eklemek istedim. – karim79

+0

@ karim79, orijinal cevaba bir yorum olarak bunu yapmak için muhtemelen daha iyi – andyface

İlgili konular