2009-07-11 5 views
1

Nicht, dass es strikt ist, und vielleicht verstehe ich einfach noch nicht ganz, wie das DOM funktioniert, indem ich das frage, aber ich versuche nur zu antizipieren, ob es hier irgendein Speicherleck-Potenzial gibt. Wenn ich ein Element mit untergeordneten Elementen, Ereignis-Listenern usw. lösche, werden diese ebenfalls bereinigt? Oder wäre ich klug, selbst eine rekursive Entfernungslösung zu implementieren?jQuery Frage: Werden mit .remove() auch Kinder ordnungsgemäß entfernt?

Um diese Frage zu erweitern, werde ich auch fragen: Löscht das Entfernen von Elementen aus dem DOM direkt (nicht über. JQuery, ich meine) auch das gleiche Problem?

Antwort

4

Ja, tut es. jQuery ist nur ein Wrapper für JavaScript-Funktionalität, die sich auf die gleiche Weise verhält: Beim Entfernen eines Knotens wird im Wesentlichen eine ganze Unterstruktur entfernt, sodass alle untergeordneten Knoten eingeschlossen sind. Dazu gehören Listener (dh alles, was dem Knoten oder einem seiner Nachkommen zuhört). Du kannst nicht auf etwas hören, das nicht mehr da ist.

0

Einfach: jQuery.remove() entfernt Kinder. Ich weiß nichts von Zuhörern, aber wahrscheinlich sind sie auch entfernt.