Ich dachte, dies könnte ein schneller Weg sein, um den Inhalt einer sehr großen Tabelle (3000 Zeilen) zu entfernen:
$jq("tbody", myTable).remove();
In Firefox dauert es jedoch ungefähr fünf Sekunden. Mache ich etwas Dummes (abgesehen vom Versuch, 3000 Zeilen in einen Browser zu laden)? Gibt es einen schnelleren Weg, dies zu tun?
javascript
jquery
dom
Morgancodes
quelle
quelle
$('#mytable tbody').empty();
. Dies stellt sicher, dass nur der Körper geleert wird.Es ist besser, Schleifen jeglicher Art zu vermeiden. Entfernen Sie einfach alle Elemente direkt wie folgt:
quelle
html("")
Anrufeempty()
internDie Verwendung von "Ablösen" ist um Größenordnungen schneller als jede der anderen Antworten hier:
Vergessen Sie nicht, das tbody-Element wieder in die Tabelle aufzunehmen, da es durch Entfernen entfernt wurde:
Beachten Sie auch, dass die
$(target).find(child)
Syntax beim Sprechen schneller ist als$(target > child)
. Warum? Brutzeln!Verstrichene Zeit zum Leeren von 3.161 Tabellenzeilen
Verwenden der Detach () -Methode (wie in meinem obigen Beispiel gezeigt):
Verwenden Sie die Methode empty ():
quelle
Die Überschriften werden nicht berührt.
quelle
Zwei Probleme, die ich hier sehen kann:
Die Methoden empty () und remove () von jQuery erledigen tatsächlich ziemlich viel Arbeit. Informationen dazu finden Sie in der JavaScript-Funktionsaufrufprofilerstellung von John Resig .
Die andere Sache ist, dass Sie für große Mengen tabellarischer Daten möglicherweise eine Datagrid-Bibliothek wie die hervorragenden DataTables in Betracht ziehen , um Ihre Daten im laufenden Betrieb vom Server zu laden, die Anzahl der Netzwerkanrufe zu erhöhen, aber die Größe dieser Anrufe zu verringern. Ich hatte eine sehr komplizierte Tabelle mit 1500 Zeilen, die ziemlich langsam wurde. Der Wechsel zur neuen AJAX-basierten Tabelle ließ dieselben Daten ziemlich schnell erscheinen.
quelle
Wenn Sie nur schnell entfernen möchten .. können Sie wie unten tun ..
Es können jedoch einige ereignisgebundene Elemente in der Tabelle vorhanden sein.
In diesem Fall,
Der obige Code verhindert nicht den Speicherverlust in IE ... TT und nicht schnell in FF ...
Es tut uns leid....
quelle
das funktioniert bei mir:
quelle
Sie könnten dies versuchen ...
quelle