J'ai ajouté jsperf test pour voir la différence de vitesse pour différentes approches pour obtenir le premier enfant (total 1000+ enfants)
donné, notif = $('#foo')
Les moyens de jQuery :
-
$(":first-child", notif)
- 4 304 ops/sec - le plus rapide
-
notif.children(":first")
- 653 ops/sec - 85% plus lent
-
notif.children()[0]
- 1 416 ops/sec - 67% plus lent
Moyens indigènes :
- JavaScript natif
ele.firstChild
- 4,934,323 ops/sec (toutes les approches ci-dessus sont 100% plus lentes par rapport à firstChild
)
- DOM ele natif de jQery :
notif[0].firstChild
- 4,913,658 ops/sec
Ainsi, les 3 premières approches de jQuery ne sont pas recommandées, au moins pour le premier enfant (je doute que ce soit le cas pour beaucoup d'autres aussi). Si vous avez un objet jQuery et que vous avez besoin d'obtenir le premier enfant, alors obtenir l'élément DOM natif de l'objet jQuery, en utilisant la référence du tableau [0]
(recommandé) o .get(0)
et utiliser le ele.firstChild
. Cela donne les mêmes résultats que l'utilisation normale de JavaScript.
tous les tests sont effectués dans Chrome Canary build v15.0.854.0
4 votes
Si vous utilisez jQuery, pourquoi ne pas lier les gestionnaires d'événements en utilisant également jQuery ?
2 votes
Parce que les gestionnaires d'événements liés doivent être initialisés dans document.ready(), ce qui accroît les performances (il s'agit d'une application pour IE6). existe-t-il un autre moyen ?
0 votes
Hm pas sûr. La liaison avec jQuery est la méthode standard (si vous utilisez déjà jQuery). Quel type de baisse de performances rencontrez-vous lorsque vous utilisez la fonction
jQuery(document).ready(...)
?0 votes
Il s'agit d'une grande application avec plus de 7 développeurs. À l'origine, elle durait plus de 4 secondes avant que j'essaie de la nettoyer un peu. Je préfère donc éviter d'en rajouter quand je n'en ai pas besoin :)