Wie zerstöre ich ein DOM-Element mit jQuery?

141

Angenommen, das jQuery-Objekt ist $target.

Oh mein Gott
quelle

Antworten:

194

Ist $target.remove();was du suchst?

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

Jourkey
quelle
74
Dies entfernt es natürlich nur aus dem sichtbaren Dokument. Wenn andere Verweise auf den Knoten aus JavaScript vorhanden sind, z. B. die Variable $ target selbst, wird das Objekt vorerst aus dem Garbage Collector entfernt. Wenn Sie es ZERSTÖREN möchten, müssen Sie auch alle Verweise darauf verlieren. Ich bin mir nicht ganz sicher, warum Sie ein DOM-Element ZERSTÖREN möchten. Vielleicht hasst du nur $ target. Armes $ Ziel, was hat es dir jemals angetan?
Bobince
52
$ target ist nett, wenn er alleine ist, aber er wird böse, wenn er ungefähr 100.000 geklonte Freunde hat.
Sebastián Grignoli
2
Wird .empty()ein ähnlicher Effekt haben?
Saurabh Nanda
3
@SaurabhNanda - Leer entfernt den Inhalt des Objekts, entfernt (oder zerstört) das Objekt selbst jedoch nicht.
Luke
46

Wenn Sie das Ziel vollständig zerstören möchten , haben Sie mehrere Möglichkeiten. Zuerst können Sie das Objekt wie oben beschrieben aus dem DOM entfernen ...

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

Option 1 - Ersetzen Sie dann das Ziel durch ein leeres jQuery-Objekt (jQuery 1.4+).

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

Option 2 - Oder löschen Sie die Eigenschaft vollständig (führt zu einem Fehler, wenn Sie an anderer Stelle darauf verweisen).

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

Weitere Informationen : Informationen zum leeren jQuery-Objekt und Informationen zum Löschen

Luke
quelle
3
Warum delete $targetfunktioniert das nicht ? Perfektionkills.com/understanding-delete/#misconceptions Warum $target=nullfunktioniert es nicht ?
LeeGee
@LeeGee - Können Sie bitte Ihren Beitrag zusammenfassen, um zu erklären, warum das Löschen für jQuery-Objekte nicht funktioniert? Warum scheint es zu funktionieren, wenn wir uns am Ende console.log ($ target) ansehen? Danke dir.
Luke
Ich kann es nicht besser erklären als den zitierten Artikel, den ich sehr detailliert fand.
LeeGee
Für den Datensatz funktioniert dies in der Konsole, da die Konsole JS im Bereich der Auswertung auswertet, wodurch das Löschen ermöglicht wird. Variablen in "natürlichen" Bereichen können nicht gelöscht werden. Verwenden Sie $target=nullstattdessen. Es ist schneller und führt nicht zu internen Browseroptimierungen.
Bendman
1
Löschen ist in Ordnung. Dies bedeutet nur, dass der Block von der JS-Engine nicht optimiert wird. In den meisten Fällen ist das völlig irrelevant. Wenn es zu einem Problem wird, suchen Sie nach Möglichkeiten, um Löschen zu verwenden. Nicht bevor.
Charlie Martin