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+)
@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.
.empty()
miał podobny efekt?Jeśli chcesz całkowicie zniszczyć cel, masz kilka opcji. Najpierw możesz usunąć obiekt z DOM, jak opisano powyżej ...
Opcja 1 - Następnie zamień cel na pusty obiekt jQuery (jQuery 1.4+)
Opcja 2 - Lub całkowicie usuń usługę (spowoduje to błąd, jeśli odwołasz się do niej w innym miejscu)
Więcej informacji : informacje o pustym obiekcie jQuery oraz informacje o usuwaniu
źródło
delete $target
nie zadziała: perfectionkills.com/understanding-delete/#misconceptions Dlaczego nie$target=null
zadziała?$target=null
zamiast tego. Jest szybszy i nie powoduje problemów z wewnętrznymi optymalizacjami przeglądarki.Szukasz
.remove()
funkcji.http://docs.jquery.com/Manipulation/remove
źródło