104 votes

jquery - moyen le plus rapide de supprimer toutes les lignes d'une très grande table

J'ai pensé que cela pourrait être un moyen rapide de supprimer le contenu d'un très grand tableau (3000 lignes):

 $jq("tbody", myTable).remove();
 

Mais cela prend environ cinq secondes dans Firefox. Est-ce que je fais quelque chose de stupide (à part d'essayer de charger 3000 lignes dans un navigateur)? Y at-il moyen plus rapide de le faire?

232voto

Seb Points 17238
 $(myTable).empty();
 

C'est aussi vite que vous obtenez.

86voto

argonius Points 519

Il est préférable d'éviter tout type de boucle, supprimez simplement tous les éléments directement comme ceci:

 $("#mytable > tbody").html("");
 

4voto

Michael Mikowski Points 729

Amélioration considérable des performances avec Patch

J'ai appliqué le correctif pour le bogue et ma vitesse a été considérablement améliorée. Auparavant, la suppression d’environ 4800 éléments enfants prenait 42 secondes. Cela fonctionne maintenant en moins de 1s. YMMV, mais les changements semblaient assez chirurgicaux et sans danger. Je ferai rapport si je vois des problèmes.

Comme il y avait d'autres différences dans la version de développement, cela devait être fait "à la main".

3voto

artlung Points 13433

Deux questions je peux le voir ici:

  1. Le vide() et remove() les méthodes de jQuery fait faire un peu de travail. Voir John Resig de l' Appel de Fonction JavaScript de Profilage pour pourquoi.

  2. L'autre chose, c'est que pour de grandes quantités de données tabulaires, vous pourriez envisager une grille de données de la bibliothèque, tels que les excellentes tables de données pour charger vos données à la volée à partir du serveur, en augmentant le nombre d'appels de réseau, mais la diminution de la taille de ces appels. J'ai eu un très compliquée table avec 1500 lignes qui est devenu assez lent, le passage à la nouvelle AJAX basé sur table, ces mêmes données semblent plutôt rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X