4 Stimmen

Dauerhaftes Entfernen eines Elements in jQuery

Wenn ich ein Element anfüge und es anschließend wieder entferne, ist das Objekt noch vorhanden?

bg = $('<div class="dialog_bg"></div>');
$('#'+elm).append(bg);

bg.remove();

Wie ist das möglich? Ist es nicht möglich, das Element dauerhaft zu entfernen?

2 Stimmen

Sollte Ihr Code das Element aus dem DOM entfernen. Das Element existiert noch in der Variablen "bg", aber nicht im DOM. Sie können bg = null setzen, damit der JS-Garbage-Collector es löscht. Wenn das Element nicht aus dem DOM entfernt wird, ist etwas anderes mit Ihrem Code falsch.

0 Stimmen

Es sieht aus wie das Element aus dem DOM entfernt wird.. aber wenn ich das Objekt "bg" in eine if-Anweisung setzen, gibt es true

0 Stimmen

Wie kann ich dann in jQuery prüfen, ob das Element entfernt wurde?

2voto

Tesserex Punkte 16756

En remove Methode nimmt das Objekt einfach aus dem DOM heraus, mit anderen Worten, es wird von der Seite entfernt. Geht es um das Löschen des Objekts aus dem Speicher? In diesem Fall glaube ich nicht, dass Sie das explizit selbst tun können - warum sollten Sie das tun? Javascript ist ein Garbage-Collected-Sprache .

edit: siehe auch diese Frage für weitere Informationen.

2voto

sled Punkte 14307

Damit das Element vollständig aus dem DOM entfernt wird. Das ist in Ordnung. Ihre Frage ist, wie man sicherstellt, dass das Element wirklich entfernt wird.

Ich würde dafür die Methode .parent() verwenden. Denn wenn das Element aus dem DOM entfernt wird, hat es keinen Elternteil mehr. Dies kann schneller sein als $("html").has(bg) weil sie nicht den gesamten DOM-Baum durchqueren muss.

bg = $('<div class="dialog_bg"></div>');
$('#'+elm).append(bg);

bg.remove();

if(bg.parent().length == 0) {
   // removed succesfully
} else {
   // still somewhere in the dom
}

// tells the garbage collector to free the memory because there's no way to access the element anymore
bg = null;

-1voto

kei Punkte 19791

Wie wäre es damit:

$('div.dialog_bg').remove();

Möglicherweise haben Sie etwas innerhalb des Divs hinzugefügt, so dass es nicht mehr erkannt wird.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X