Neden jquery insert oluşturulan iki div içine yayılmıyor

Ben şu html var:

<div id="one"></div>
<div id="two"></div>

Aşağıdaki kodu jquery'de çalıştırdığımda:

$(function() {
    var span  = $("name");
    $("#one").append(span);
    $("#two").append(span);
});

Aralık yalnızca son div'e eklenir:

<div id="one"></div>
<div id="two">name</div>

Her iki divs de eklenmesini bekliyorum, neden olmasın?

0
soru, yayılma alanını iki divs içine yerleştirmeyle ilgili değil, soru neden takılı değil :)
katma yazar AngularInDepth.com, kaynak
Sorunun amacını özlüyorsunuz, üzgünüm ... ve yine, JS'de her zaman değere göre geçiyor, ancak değer ilkel veya referans olabilir
katma yazar AngularInDepth.com, kaynak
Neden bir nesne ilk etapta yaratılıyor? typeOf span === nesne. Aksine sadece bir dize ekleyerek sorunu çözebilirdi. :-) var span = " name "; jsfiddle.net/to923zjc
katma yazar Santa_612, kaynak
Bir nesne özel olarak belirtilmesi gerekmeksizin otomatik olarak referans yoluyla iletilir.
katma yazar Santa_612, kaynak

6 cevap

Each DOM element can be connected to one specific parent. You can't append same DOM element to two DOM parents. Refer SO

Bu durumda, düğümü klonla gerekir.

<div class="snippet" data-lang="js" data-hide="false" data-console="false" data-babel="false"> <div class="snippet-code">

   $(function() {
    var span  = $("name");
    $("#one").append(span);
    $("#two").append(span.clone());
});
  
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<div id="one"></div>
<div id="two"></div>
</div> </div>
3
katma
Teşekkürler, "referansla geçildi", her bir DOM düğümünün bu gibi Cevap yapar. Lütfen, bu cevabınızı bu bilgiyle birlikte verilen cevabın cevaplarını genişletin ve cevabınızı kabul edeceğim.
katma yazar AngularInDepth.com, kaynak
Ve yine de değere göre geçiyor, değer referans olsa da :)
katma yazar AngularInDepth.com, kaynak
Onu güncelledi ve bu SO sorusuna da bir link ekledi.
katma yazar mohamedrias, kaynak

betiğini güncelle

$(function() {
    var span  = $("name");
    $("#one, #two").append(span);

});
2
katma

clone() kullanmanız gerekir.

var span  = $("name");
    $("#one").append(span);
    $("#two").append(span.clone());
1
katma

What happens is, your element does get appended to #one, but immediately it is again appended to #two

$(function() {
    var span  = $("name");
    $("#one").append(span);
    setTimeout(function(){
        $("#two").append(span);
    },2000)
});

Check this Fiddle with timeout

Birleşik seçiciyi kullanın: appendTo ('# bir, # iki')


Cevap

$(function() {
    var span  = $("name");
    $(span).appendTo("#one,#two");
});

Demo

1
katma
evet, teşekkürler, zaten bir cevap buldum burada
katma yazar AngularInDepth.com, kaynak

aşağıdaki kodu kullanacak. DEMO

bir DOM öğesi iki kez ekleyemez.

$("name").appendTo("#one,#two");
1
katma

Merhaba bunu da deneyebilirsin

$(function() {
    var span  = $("name");
   $("#one").append(span);
    $("#two").append(span.html());
});

http://jsfiddle.net/72ky7o28/

0
katma