Bagaimana cara menghancurkan elemen DOM dengan jQuery?

141

Misalkan objek jQuery adalah $target.

Oh Tuhan
sumber

Jawaban:

194

Apakah $target.remove();yang Anda cari?

https://api.jquery.com/remove/

Jourkey
sumber
75
Tentu saja ini hanya menghilangkannya dari dokumen yang terlihat. Jika ada referensi lain ke simpul dari JavaScript, seperti variabel $ target itu sendiri, objek akan keluar dari pengumpul sampah untuk saat ini. Jika Anda ingin MENGHANCURKANnya, Anda juga harus kehilangan semua referensi untuk itu. Saya tidak yakin mengapa Anda ingin MENGHANCURKAN elemen DOM. Mungkin Anda hanya membenci $ target. Miskin $ target, apa yang pernah dilakukannya untuk Anda?
bobince
52
$ target baik ketika dia sendirian, tetapi dia menjadi jahat ketika dia berada di sekitar 100.000 teman kloningnya.
Sebastián Grignoli
2
Apakah akan .empty()memiliki efek yang sama?
Saurabh Nanda
3
@SaurabhNanda - Kosong akan menghapus konten objek, tetapi tidak menghapus (atau menghancurkan) objek itu sendiri.
Lukas
46

Jika Anda ingin menghancurkan target, Anda memiliki beberapa opsi. Pertama, Anda dapat menghapus objek dari DOM seperti dijelaskan di atas ...

console.log($target);   // jQuery object
$target.remove();       // remove target from the DOM
console.log($target);   // $target still exists

Opsi 1 - Kemudian ganti target dengan objek jQuery kosong (jQuery 1.4+)

$target = $();
console.log($target);   // empty jQuery object

Opsi 2 - Atau hapus properti seluruhnya (akan menyebabkan kesalahan jika Anda merujuknya ke tempat lain)

delete $target;
console.log($target);   // error: $target is not defined

Lebih banyak membaca: info tentang objek jQuery kosong , dan info tentang delete

Luke
sumber
3
Mengapa delete $targettidak akan berfungsi: perfectionkills.com/understanding-delete/#misconceptions Mengapa tidak akan $target=nullberfungsi?
LeeGee
@LeeGee - Bisakah Anda merangkum posting Anda untuk menjelaskan mengapa penghapusan tidak berfungsi untuk objek jQuery? Mengapa tampaknya berfungsi ketika kita melihat console.log ($ target) di akhir? Terima kasih.
Lukas
Saya tidak bisa menjelaskannya lebih baik daripada artikel yang dikutip, yang saya temukan sangat rinci.
LeeGee
Sebagai catatan, ini berfungsi di konsol karena konsol mengevaluasi JS dalam lingkup eval, yang memungkinkan penghapusan. Variabel dalam lingkup "alami" tidak akan dapat dihapus. Gunakan $target=nullsebagai gantinya. Lebih cepat dan tidak mengacaukan optimasi browser internal.
bendman
1
Hapus baik-baik saja. Itu hanya berarti bahwa blok tidak akan dioptimalkan oleh mesin JS. Dalam kebanyakan kasus, itu sama sekali tidak relevan. Ketika itu menjadi masalah, maka Anda mencari cara untuk menghapus. Tidak sebelum.
Charlie Martin