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;
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?
0 Stimmen
Vielleicht gibt es einen anderen Weg, aber Sie können die
has()
Methode. Versuchen Sie$("html").has(bg)
- wenn das zurückgegebene Objekt die Länge 0 hat, dann ist es nicht auf der Seite. Also,if ($("html").has(bg).length == 0)
sagt, wenn es nicht da ist.0 Stimmen
Ist dies der einzige und schnellste Weg?