Was ist der Unterschied zwischen empty()
und remove()
Methoden in jQuery
, und wenn wir eine dieser Methoden aufrufen, werden die Objekte erstellt werden zerstört und Speicher freigegeben?jQuery leer() vs entfernen()
Antwort
empty()
wird den gesamten Inhalt der Auswahl entfernen.remove()
wird die Auswahl und ihren Inhalt entfernen.
Bedenken Sie:
<div>
<p><strong>foo</strong></p>
</div>
$('p').empty(); // --> "<div><p></p></div>"
// whereas,
$('p').remove(); // --> "<div></div>"
die DOM-Objekte Beide entfernen und den Speicher freigeben sollte sie nehmen, ja.
Die Dokumentation erklärt es sehr gut. Es enthält auch Beispiele:
vor:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.remove():
$('.hello').remove();
nach:
<div class="container">
<div class="goodbye">Goodbye</div>
</div>
vor:
<div class="container">
<div class="hello">Hello</div>
<div class="goodbye">Goodbye</div>
</div>
.empty():
$('.hello').empty();
nach:
<div class="container">
<div class="hello"></div>
<div class="goodbye">Goodbye</div>
</div>
Soweit Speicher betroffen ist, sobald ein ele ment aus dem DOM entfernt wurde und es keine weiteren Verweise darauf gibt, wird der Garbage Collector den Speicher zurückfordern, wenn er ausgeführt wird.
Große Antwort ... thnx :) – Bhupi
leer wird nicht die Attribute des Selektors berühren. Wenn Sie die Attribute des Selector-Elements entfernen möchten, habe ich festgestellt, dass jQuery removeAttr und removeClass in Firefox fehlerhaft sind. Die Option, die ich hatte, bestand also darin, die Methode remove zu verwenden und das Containerelement erneut hinzuzufügen und anschließend untergeordnete Knoten an dasselbe anzuhängen. – randominstanceOfLivingThing
Ähnlich kann man detach() auch mit den beiden obigen ... erklären. – Krish
$("body").empty()
- es entfernt die HTML-DOM-Elemente im Inneren des Körpers tag -
, wenn Sie erklären $("body").remove()
- es die gesamte HTML-DOM entfernen zusammen mit Körper TAG.
Was gibt diese Antwort, die in den vorhandenen Antworten fehlt, die seit drei Jahren hier sind? – jcsanyi
- 1. jquery Tooltips: anhängen/vs. Show entfernen/verstecken
- 2. jQuery removeClass gescheitert zu entfernen, wenn JSON leer
- 3. entfernen Leer mit Erlang Regex
- 4. JQuery val() zurückkehrend leer
- 5. Jquery serialize() ist leer
- 6. jquery leer Funktion und Event-Handler
- 7. Entfernen vs neue Instanz
- 8. jquery: leer, aber ignorieren Textknoten
- 9. Jquery - JSON.stringify, Array ist leer
- 10. VS 2015 Diagnosetools Fenster ist leer
- 11. SQL/MySQL NOT NULL vs NICHT LEER
- 12. Standardmäßige leere Option entfernen ----- mit leer = True
- 13. leer Xmlns entfernen = „“ nach XML-Serialisierung
- 14. Entfernen leer xmlns = "" Attribut mit PHP
- 15. effiziente Möglichkeit zum Entfernen leer div
- 16. Entfernen TFoot, wenn TBody trs leer sind
- 17. jQuery Mobile vs regelmäßigen jQuery
- 18. unlink vs Entfernen in C++
- 19. jQuery Mobile Delegat vs Live-vs binden
- 20. jQuery Plugins vs UI vs einige Alternative
- 21. JSON2 vs. jquery-json
- 22. document.getElementById vs jQuery $()
- 23. jquery: on vs live
- 24. mustache.js vs. jquery-tmpl
- 25. AngularJS vs JQuery
- 26. jQuery: eq() vs get()
- 27. jQuery AJAX vs. UpdatePanel
- 28. Jquery WCF vs Pagemethoden
- 29. Lernen Javascript vs. jQuery
- 30. $ instance Wordpress vs JQuery
Was ist mit Event Handlern? Ich habe einen seltsamen Fall, bei dem zweimal leer + anhängen, mit verschiedenen Anhängen bewirkt, dass der zweite Satz angehängter Elemente die Handler des ersten Satzes ausführt. – Killroy
@way zu spät, aber sie entfernen auch den Handler. Es besteht die Möglichkeit, dass diese Handler mit einer Funktion wie "live" oder "delegate" registriert wurden. – undone