Ist es notwendig, leer () vor html () oder vor innerHTML aufzurufen?

8

Ich habe ein Popup-Plugin, das den HTML-Inhalt eines <div/> mit der Antwort eines AJAX-Aufrufs setzt.

Jedes Mal, wenn ich das Popup öffne, rufe ich einfach im Code $("#popup").html(response) an. Dies überschreibt den vorhandenen HTML-Inhalt mit dem neuen Inhalt.

Soll ich $("popup").empty() aufrufen, bevor ich $("popup").html(response) anrufe, damit ich den Browserspeicher freigeben kann, der von den Objekten verwendet wurde, die zuvor in $("popup") div waren? (eventuell Speicherlecks verhindern)

PS: Was ist, wenn ich $("popup")[0].innerHTML = response anrufe? Soll ich .empty() Methode aufrufen?

    
Catalin 03.06.2013, 12:21
quelle

4 Antworten

7

Kurze Antwort Nr.

jQuery.fn.html verwendet DOMNode.innerHTML = nach mehreren anderen Dingen. Eine besteht darin, alle gespeicherten Daten auf Knoten zu entfernen (gespeichert über $.fn.data ), siehe Ссылка für die vollständige Quellenübersicht.

.innerHTML entfernt die untergeordneten Elemente und ersetzt sie durch das neue html. Aber Vorsicht vor Speicherlecks. Ich würde jQuery.fn.empty vor dem Festlegen von innerHTML verwenden. zB.

%Vor%

Sie würden denken, dass alles in Ordnung ist. Der Knoten ersetzt / entfernt wird jedoch weiterhin in der Variablen a erfasst und daher nicht zum Garbage Collector geleitet. Ich bin nicht sicher ob oder nicht, dass jQuery DOMNodes intern speichert, bis Sie jQuery.removeData etc.

aufrufen     
andlrc 03.06.2013, 12:26
quelle
4

JQuery Dokumentation der HTML-Methode sagt:

  

Wenn .html () zum Festlegen des Inhalts eines Elements verwendet wird, wird jeglicher Inhalt, der in diesem Element enthalten war, vollständig durch den neuen Inhalt ersetzt. Darüber hinaus entfernt jQuery andere Konstrukte wie Daten- und Ereignishandler von untergeordneten Elementen, bevor diese Elemente durch den neuen Inhalt ersetzt werden.

Sie müssen also empty() nicht aufrufen.

    
Oleksii Aza 03.06.2013 12:26
quelle
1

Sie müssen nicht empty() . html ( response ) Methode ovverides den vorhandenen Inhalt aufrufen.

    
quelle
0

Kein Unterschied außer .empty () wird schneller ausgeführt und .html () kann den Inhalt des Kontexts überschreiben

Ссылка

    
Josh Bedo 03.06.2013 12:48
quelle

Tags und Links