JQuery'nin replaceWith () ve html () arasındaki fark nedir?


148

Parametre olarak HTML aktarılırken jQuery'nin replaceWith () ve html () işlevleri arasındaki fark nedir?


2
bu bana yardımcı oldu! Bir etiketin metnini dinamik olarak jquery kullanarak değiştirmeye çalışıyordum ve bu ileti dizisi bana kesinlikle yardımcı oldu. Teşekkürler!
HereToLearn_

Yanıtlar:


294

Bu HTML kodunu alın:

<div id="mydiv">Hello World</div>

Yapıyor:

$('#mydiv').html('Aloha World');

Sonuçlanacak:

<div id="mydiv">Aloha World</div>

Yapıyor:

$('#mydiv').replaceWith('Aloha World');

Sonuçlanacak:

Aloha World

Dolayısıyla html () , öğenin içeriğini değiştirirken, replaceWith () gerçek öğeyi değiştirir.


1
Güzel açıklama!
Luis Gouveia

32

replaceWith (), mevcut öğeyi değiştirirken, html () yalnızca içeriği değiştirir.

ReplaceWith () öğesinin aslında öğeyi silmeyeceğini, yalnızca DOM'dan kaldıracağını ve koleksiyonda size geri göndereceğini unutmayın.

Peter için bir örnek: http://jsbin.com/ofirip/2


3
+1, replaceWith () öğesinin aslında öğeyi silmediğini yazması çok yararlıdır. Ben bunu çözmemiştim!
Peter

2
Doğru, hala var. DOM'da yok, bu yüzden görmeyeceksiniz, ancak yine de geçerli bir HTML parçası. Kanıt: jsbin.com/ofirip/2
cgp

1
Evet bu doğru. örnek ortaya koyduğunuz için teşekkürler. Bunu DOM'dan (artı çöp toplama) çıkarmayı esasen benim bakış açımdan silme olarak düşünüyordum. Ama teknik olarak haklısın. Kaldıracağım -1ve umarım bu herkes için faydalı olacaktır. :)
Peter

1
Not için teşekkürler, eski elemanı dönen replaceWith () bana biraz ayıklama hayal kırıklığı :( verdi
Dain

2
Evet, işlev değiştirilir elemanını döndüren fark ettim, şimdi en azından yarım saat boyunca bu mücadele ettik, böyle koduyla yenisini döndürecek şekilde bekliyordum: var $form = $target.closest('tr').replaceWith(html) Bu çıkıyor $formdeğiştirilmeden önce öğesi içeriyor. sigh
Pawel Krakowiak

5

Html () ve replaceWith () Jquery işlevlerini kullanmanın iki yolu vardır.

<div id="test_id">
   <p>My Content</p>
</div>

1.) html () vs replaceWith ()

var html = $('#test_id p').html(); "İçeriğim" i döndürecek

Ancak var replaceWith = $('#test_id p').replaceWith();tüm DOM nesnesini döndürecektir <p>My Content</p>.


2.) html ('değer') vs replaceWith ('değer')

$('#test_id p').html('<h1>H1 content</h1>'); size aşağıdaki çıktıyı verecektir.

<div id="test_id">
  <p><h1>H1 content</h1></p>
</div>

Ama $('#test_id p').replaceWith('<h1>H1 content</h1>');size şu çıktıyı verecektir.

<div id="test_id">
      <h1>H1 content</h1>
</div>

2

Eski soru ama bu birine yardımcı olabilir.

HTML'niz geçerli değilse, bu işlevlerin Internet Explorer ve Chrome / Firefox'ta nasıl çalıştığı konusunda bazı farklılıklar vardır.

HTML'nizi temizleyin ve belgelendiği gibi çalışsın.

(Geceme </center>maliyetimi kapatmıyorum!)


6
Bu yüzden artık merkezi kullanmamalısınız. : p
Romain Kabileleri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.