Je ne peux pas parler de l'aspect élégance, mais l'aspect performance peut faire une énorme différence.
On dirait, à partir d'un ensemble de tests JavaScript que votre méthode originale est en fait la le plus efficace, et contrairement à l'hypothèse à laquelle la réponse acceptée fait référence, les sélecteurs Sizzle non-CSS tendent à être mucho moins efficaces que les sélecteurs de méthodes. Il y a une raison à cela. Le site $('.answer')
peut utiliser le navigateur natif getElementsByClass()
sans avoir à parcourir manuellement les résultats. Le site :first
complique les choses. Dans ce cas, l'utilisation des sélecteurs de grésillement semble ralentir la sélection par un facteur de 4 à 5.
Je dirais qu'avec jQuery, les performances doivent l'emporter sur l'élégance, et tout semble indiquer (tous les navigateurs que j'ai testés jusqu'à présent !) que la solution inélégante de l'OP est la plus rapide, et de loin.
Voici les résultats des navigateurs ayant fait l'objet du plus grand nombre de tests :
(Les chiffres sont des "opérations par seconde", donc les chiffres les plus élevés sont plus rapides, les chiffres les plus bas sont plus lents).
0 votes
D'après ma propre expérience, j'ai constaté que
.first
peut être vraiment inefficace dans IE et que$($(foo)[0])
était significativement plus rapide. Cela n'a d'importance que pour le code critique (pensez à.each
sur les grands ensembles)1 votes
Votre version, bien que peu élégante, semble être de loin la plus efficace.
9 votes
C'est drôle de voir comment une question sur l'élégance s'est transformée en évaluation des performances.
1 votes
@box9 c'est une illustration étonnante du pouvoir du SO