2011-12-05 17 views
5

Mevcut bir 'u çevreleyen bir nasıl oluşturabilirim?Mevcut bir öğeyi jQuery'de başka biriyle nasıl sarılır?

<div id="test"> 
    <h2>Greetings</h2> 
    <p>Test</p> 
    <div class="inner">Hello</div> 
    <p>Test</p> 
    <div class="inner">Goodbye</div> 
</div> 
<div id="test2"> 
    <h2>Greetings</h2> 
    <p>Test</p> 
    <div class="inner">Hello</div> 
    <p>Test</p> 
    <div class="inner">Goodbye</div> 
</div> 

<script> 
    $("#test").before('<div class="test3">'); 
    $("#test2").after('</div>'); 
</script> 

Ama buna bir son etiketi olmadan bir <div> ekleyemezsiniz görünüyor şu şekildedir:

Benim kodudur. Peki bunu nasıl başarabilirim?

+0

Sen Doları cinsinden kodunuzu sarmak isteyebilirsiniz (function() {// code here}); böylece sadece onu yürütür o sayfa tam olarak yüklenir –

+0

Bir yineleyici ile dinamik bir listeye sahibim. Ve div başına 3 öğe eklemem gerekiyor. :( – newbie

+1

Kyoka, html gibi buna gerek yok komut önce gelir. –

cevap

9

.wrapAll()doc yöntemi

$('#test, #test2').wrapAll('<div class="test3">'); 
3

jQuery, tam HTML öğeleriyle çalışan yerel DOM API'sini sarar.

Bir etiketin yarısını ekleyemezsiniz.

Bunun yerine, daha sonra DOM tüm ağaç ekleyerek kendisine birden eleman eklenmesi, bir müstakil $('<div />') oluşturarak Tüm düğümü inşa etmeliyiz.

+0

bir çözüm vardır bilmiyordum ya da nasıl ben dinamik olarak bir div içindeki üç öğe ekleyebilirsiniz – newbie

+0

soruyu – riwalk

+0

cevaplamak için bu gerçekten yapar şey @?. newbie: Eklemeden önce ağacı kurun.Yaptığımı görün – SLaks

4

Yeni eleman ile mevcut HTML kaydırılır .wrap() API çağrısı kullanabilirsiniz.

+0

bu seçili öğelerin her birini sarın .. böylece her bir öğenin etrafında farklı bir kap koyacaktır .. 'wrapAll' bu durumda gerekli olanıdır .. –

1

Tamam, o kullanın:

<script> 
     var inner=$("#test"); 
     var outer=$('<div class="outer"></div>'); 
     outer.html(inner.html()); 
     inner=outer; 
</script> 
+0

Tak cevap verse daha iyi –

+0

Sadece cevabını değil mi? –

1

Bu kullan yapmanız gereken budur:

<script type="text/javascript"> 
$(function() { 
    $('<div class="test3"></div>') 
     .insertBefore($('#test')) 
     .append($('#test')) 
     .append($("#test2")); 
} 
</script> 
İlgili konular