J'ai pensé que cela pourrait être un moyen rapide de supprimer le contenu d'une très grande table (3000 lignes):
$jq("tbody", myTable).remove();
Mais cela prend environ cinq secondes pour terminer dans Firefox. Est-ce que je fais quelque chose de stupide (à part essayer de charger 3000 lignes dans un navigateur)? Y a-t-il un moyen plus rapide de le faire?
javascript
jquery
dom
Morgancodes
la source
la source
$('#mytable tbody').empty();
. Cela garantit que seul le corps est vidé.Il est préférable d'éviter tout type de boucles, supprimez simplement tous les éléments directement comme ceci:
la source
html("")
appels enempty()
interneL'utilisation de détacher est plus rapide que n'importe laquelle des autres réponses ici:
N'oubliez pas de remettre l'élément tbody dans la table car detach l'a supprimé:
Notez également que lorsque vous parlez, la
$(target).find(child)
syntaxe d' efficacité est plus rapide que$(target > child)
. Pourquoi? Grésiller!Temps écoulé pour vider 3161 lignes de tableau
En utilisant la méthode Detach () (comme indiqué dans mon exemple ci-dessus):
En utilisant la méthode empty ():
la source
Cela ne touchera pas les en-têtes.
la source
Deux problèmes que je peux voir ici:
Les méthodes empty () et remove () de jQuery font en fait pas mal de travail. Voir le profilage des appels de fonction JavaScript de John Resig pour savoir pourquoi.
L'autre chose est que pour de grandes quantités de données tabulaires, vous pouvez envisager une bibliothèque de grille de données telle que les excellents DataTables pour charger vos données à la volée à partir du serveur, augmentant le nombre d'appels réseau, mais diminuant la taille de ces appels. J'avais une table très compliquée avec 1500 lignes qui devenait assez lente, le passage à la nouvelle table basée sur AJAX a rendu ces mêmes données plutôt rapides.
la source
si vous ne voulez supprimer que rapidement .. vous pouvez faire comme ci-dessous ..
mais, il peut y avoir des éléments liés à un événement dans la table,
dans ce cas,
le code ci-dessus n'empêche pas une fuite de mémoire dans IE ... TT et pas rapide dans FF ...
Désolé....
la source
cela fonctionne pour moi:
la source
Vous pouvez essayer ceci ...
la source