Entfernt die jQuery-Funktion Domelemente wirklich?

8

Ich frage mich wirklich, ob jQuery entfernen Funktion wirklich Elemente aus DOM entfernt.
Zuerst habe ich hier gesucht, aber die Antworten sind nicht überzeugend.
Ich bin auf dieses Problem gestoßen, als ich bemerkte, dass ich immer noch Elemente manipulieren kann, die ich als remove-Funktion bezeichnet habe.

Mein Code:

%Vor%

Hinweis: Meine Frage ist nicht Wie löst man das? aber ich möchte verstehen, was hier vor sich geht!

Eigentlich entfernt dieser Code das # div nicht aus dem Dom, aber wenn ich Daten auf das # div gesetzt habe, ist es verloren. Ich bin jetzt ziemlich verwirrt über das Verhalten der remove -Funktion. Kann mir das bitte jemand erklären? DEMO

Ich bin überzeugt, dass die div-Variable nicht nur ein Klon des dom-Elements ist, sondern ein Verweis darauf, denn wenn ich die div-Variable manipuliere (wie div.html('something') ), wird das div innerhalb des DOM wird aktualisiert.
Oder irre ich mich?

    
skafandri 23.05.2012, 08:58
quelle

2 Antworten

14

remove() entfernt das Element tatsächlich aus dem DOM.

In Ihrem Beispiel wurde das Element jedoch im Arbeitsspeicher zwischengespeichert, weil Sie es der Variablen div zugewiesen haben. Daher können Sie es immer noch verwenden und erneut anhängen. Es enthält weiterhin alle Ereignisse, die das Original gemacht hat.

  

Wenn das, was du sagst, richtig ist, warum verliere ich dann die an das div gebundenen Daten?

Wenn Sie die Quelle für remove () überprüfen, werden Sie das tun Beachten Sie, dass es die interne Funktion cleanData aufruft, die die Ereignisse entfernt und den data -Cache für das Element löscht. Deshalb verlieren Sie die Information.

Wenn Sie das Element aus dem DOM entfernen möchten, aber die Elemente beibehalten möchten, verwenden Sie stattdessen detach() .

Hier ist eine Geige, um den Unterschied zu zeigen: Ссылка

    
Rory McCrossan 23.05.2012, 09:00
quelle
2

musste die zugewiesene Variable löschen:

%Vor%     
skafandri 23.05.2012 12:32
quelle

Tags und Links