J'ai une table html que je réorganise en fonction d'une liste CSV de valeurs d'attributs personnalisés que j'ai pour chaque ligne de table. J'utilise la fonction suivante pour le faire:L'appendTo de JQuery est très lent!
for (var i = 0; i < arrCSV.length; i++)
{
$('#' + tableId)
.find('[fname = ' + arrCSV[i] + ']')
.eq(0)
.parents('tr')
.eq(0)
.appendTo('#' + tableId);
}
La structure de la table est:
<table>
<tr>
<td fname='f1'>something here</td>
</tr>
<tr>
<td fname='f2'>something here</td>
</tr>
</table>
Le CSV pourrait être quelque chose comme ça "f2, f1"
Je trouve cela est très fonction d'exécution très lente. Toute aide pour l'optimiser est vraiment appréciée.
EDIT: Sur la base de l'article à http://www.learningjquery.com/2009/03/43439-reasons-to-use-append-correctly, on peut obtenir le plus grand coup de pouce de la performance en appelant append une seule fois par la chaîne concaténée html. Est-ce que quelqu'un peut aider à utiliser cette technique pour mon problème? Je ne suis pas sûr de savoir comment obtenir le code HTML dans la boucle for et l'ajouter une fois.
Si vous voulez ajouter du HTML, vous devez vous assurer de supprimer les éléments précédents, sinon vous ne réorganisez pas la table, mais vous ajoutez simplement des éléments répétés à la fin. Vérifiez ma réponse ci-dessous (corrigée, mise à jour et testée) pour voir si elle améliore suffisamment vos performances pour coller avec appendTo qui va déplacer l'élément et éliminer le besoin de le supprimer explicitement. – tvanfosson