replaceWith () akan mengganti elemen saat ini, sedangkan html () hanya mengganti konten.
Perhatikan bahwa replaceWith () tidak akan benar-benar menghapus elemen tetapi cukup menghapusnya dari DOM dan mengembalikannya kepada Anda dalam koleksi.
+1 sangat berguna untuk menuliskannya agar replaceWith () tidak benar-benar menghapus elemen. Saya belum menemukan jawabannya!
Peter
2
Memang benar, masih ada. Itu tidak ada di DOM, jadi Anda tidak akan melihatnya, tetapi masih berupa HTML yang valid. Bukti: jsbin.com/ofirip/2
cgp
1
ya ini benar. terima kasih telah memberikan contoh. Saya berpikir untuk menghapusnya dari DOM (ditambah pengumpulan sampah) sebagai penghapusan pada dasarnya dari sudut pandang saya. Tapi secara teknis Anda benar. Saya akan menghapus -1dan mudah-mudahan ini akan bermanfaat untuk semua. :)
Peter
1
Terima kasih atas catatannya, replaceWith () mengembalikan elemen lama hanya memberi saya beberapa frustrasi debugging :(
dain
2
Ya, saya sudah berjuang ini selama setidaknya setengah jam sekarang, saya baru menyadari bahwa fungsi mengembalikan elemen yang diganti, saya mengharapkannya untuk mengembalikan yang baru dengan kode seperti ini: var $form = $target.closest('tr').replaceWith(html) Ternyata $formberisi elemen sebelum penggantian. sigh
Pawel Krakowiak
5
Ada dua cara menggunakan fungsi html () dan replaceWith ().
<divid="test_id"><p>My Content</p></div>
1.) html () vs replaceWith ()
var html = $('#test_id p').html(); akan mengembalikan "Konten Saya"
Tetapi
var replaceWith = $('#test_id p').replaceWith();akan mengembalikan seluruh objek DOM
<p>My Content</p>.
2.) html ('value') vs replaceWith ('value')
$('#test_id p').html('<h1>H1 content</h1>'); akan memberi Anda put out berikut.
<divid="test_id"><p><h1>H1 content</h1></p></div>
Tapi
$('#test_id p').replaceWith('<h1>H1 content</h1>');akan memberi Anda put berikut.
Itu sebabnya Anda tidak harus menggunakan pusat lagi. : p
Romain Tribes
2
Mungkin juga berguna untuk mengetahui bahwa itu .empty().append()juga bisa digunakan .html(). Dalam patokan yang ditunjukkan di bawah ini lebih cepat tetapi hanya jika Anda perlu memanggil fungsi ini berkali-kali.
Jawaban:
Ambil kode HTML ini:
Perbuatan:
Akan menghasilkan:
Perbuatan:
Akan menghasilkan:
Jadi html () menggantikan konten elemen, sedangkan replaceWith () menggantikan elemen aktual.
sumber
replaceWith () akan mengganti elemen saat ini, sedangkan html () hanya mengganti konten.
Perhatikan bahwa replaceWith () tidak akan benar-benar menghapus elemen tetapi cukup menghapusnya dari DOM dan mengembalikannya kepada Anda dalam koleksi.
Contoh untuk Peter: http://jsbin.com/ofirip/2
sumber
-1
dan mudah-mudahan ini akan bermanfaat untuk semua. :)var $form = $target.closest('tr').replaceWith(html)
Ternyata$form
berisi elemen sebelum penggantian. sighAda dua cara menggunakan fungsi html () dan replaceWith ().
1.) html () vs replaceWith ()
var html = $('#test_id p').html();
akan mengembalikan "Konten Saya"Tetapi
var replaceWith = $('#test_id p').replaceWith();
akan mengembalikan seluruh objek DOM<p>My Content</p>
.2.) html ('value') vs replaceWith ('value')
$('#test_id p').html('<h1>H1 content</h1>');
akan memberi Anda put out berikut.Tapi
$('#test_id p').replaceWith('<h1>H1 content</h1>');
akan memberi Anda put berikut.sumber
Pertanyaan lama tapi ini bisa membantu seseorang.
Ada beberapa perbedaan dalam cara fungsi-fungsi ini beroperasi di Internet Explorer dan Chrome / Firefox JIKA HTML Anda tidak valid.
Bersihkan HTML Anda dan itu akan berfungsi seperti yang didokumentasikan.
(Tidak menutup
</center>
biaya saya malam saya!)sumber
Mungkin juga berguna untuk mengetahui bahwa itu
.empty().append()
juga bisa digunakan.html()
. Dalam patokan yang ditunjukkan di bawah ini lebih cepat tetapi hanya jika Anda perlu memanggil fungsi ini berkali-kali.Lihat: https://jsperf.com/jquery-html-vs-empty-append-test
sumber