Jak zniszczyć element DOM za pomocą jQuery?


Odpowiedzi:


194

Jest $target.remove(); to, czego szukasz?

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


75
Oczywiście powoduje to tylko usunięcie go z widocznego dokumentu. Jeśli istnieją inne odwołania do węzła z JavaScript, takie jak sama zmienna $ target, obiekt na razie ucieknie z modułu odśmiecania pamięci. Jeśli chcesz go ZNISZCZYĆ, musisz też stracić wszelkie odniesienia do niego. Nie jestem jednak do końca pewien, dlaczego chcesz ZNISZCZYĆ element DOM. Może po prostu nienawidzisz $ target. Biedny $ target, co on ci kiedykolwiek zrobił?
bobince

52
$ target jest miły, gdy jest sam, ale robi się paskudny, gdy jest w pobliżu swoich 100 000 sklonowanych przyjaciół.
Sebastián Grignoli

2
Będzie .empty()miał podobny efekt?
Saurabh Nanda

3
@SaurabhNanda - Empty usunie zawartość obiektu, ale nie usunie (ani nie zniszczy) samego obiektu.
Łukasz

46

Jeśli chcesz całkowicie zniszczyć cel, masz kilka opcji. Najpierw możesz usunąć obiekt z DOM, jak opisano powyżej ...

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

Opcja 1 - Następnie zamień cel na pusty obiekt jQuery (jQuery 1.4+)

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

Opcja 2 - Lub całkowicie usuń usługę (spowoduje to błąd, jeśli odwołasz się do niej w innym miejscu)

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

Więcej informacji : informacje o pustym obiekcie jQuery oraz informacje o usuwaniu


3
Dlaczego delete $targetnie zadziała: perfectionkills.com/understanding-delete/#misconceptions Dlaczego nie $target=nullzadziała?
LeeGee,

@LeeGee - Czy możesz podsumować swój post, aby wyjaśnić, dlaczego usuwanie nie działa w przypadku obiektów jQuery? Dlaczego wygląda na to, że działa, gdy spojrzymy na console.log ($ target) na końcu? Dziękuję Ci.
Łukasz

Nie potrafię tego lepiej wyjaśnić niż cytowany artykuł, który uważam za bardzo szczegółowy.
LeeGee,

Dla przypomnienia, działa to w konsoli, ponieważ konsola ocenia JS w zakresie eval, co umożliwia usuwanie. Zmienne w zakresach „naturalnych” nie będą usuwane. Użyj $target=nullzamiast tego. Jest szybszy i nie powoduje problemów z wewnętrznymi optymalizacjami przeglądarki.
bendman

1
Usuń jest w porządku. Oznacza to po prostu, że blok nie zostanie zoptymalizowany przez silnik JS. W większości przypadków jest to całkowicie nieistotne. Kiedy staje się to problemem, szukasz sposobów na obejście funkcji usuwania. Nie przed.
Charlie Martin

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.