Eh bien .... ça dépend. Si vous l'insérez beaucoup, la seconde est plus rapide, car il y a moins de travail répété (mais plus d'analyse au départ ... et cette partie dépend du navigateur, que l'analyse ou le paramétrage explicite du CSS soit plus rapide). La chaîne html que vous utilisez est mise en cache en tant que fragment de document, réutilisée pour de futures insertions. La seconde aura donc tous les styles de chaîne et sera prête à être clonée immédiatement, plutôt que de définir des styles à chaque fois. une boucle c'est beaucoup plus rapide.
Malheureusement, parce que de cette mise en cache, il est difficile à tester, car la meilleure façon de tester ... une boucle répétée, il est optimisé pour. Voici une démo de test rapide qui fonctionne dans Chrome ou Firefox/Firebug, il suffit d'ouvrir votre console pour voir les résultats (la page sera en retard pendant son ouverture ...l'exécution des tests):
http://jsfiddle.net/XAece/
Dans ce test, sur ma machine pour 100.000 itérations dans Chrome: Méthode
.css()
: 4654ms
- méthode de style en ligne: 4056ms
$(html, props)
méthode: 5816ms
Pour Firefox:
- méthode
.css()
: 8648ms méthode
- de style en ligne: 3371ms
- méthode
$(html, props)
: 10250ms
Comme une note de côté, il y a une autre méthode (troisième dans le test ci-dessus), $(html, props)
, où vous pouvez joindre des gestionnaires d'événements, utilisez text
pour obtenir le texte intérieur codé, etc:
$("<div />", {
css: { "background-color" : "red",
"color" : "white",
"border" : "solid 1px black" },
click: function() { alert('You clicked me!'); }
}).appendTo(someElement);
jsfiddle.net est maintenant bookmarké :) – Glen