jQuery Odd: sélecteur CSS ou jQ?

Il existe deux méthodes simples pour sélectionner des lignes impaires dans une table avec jQuery, à l’aide du filtre :odd ou du sélecteur :nth-child(odd) ;

 $('table tr').filter(':odd') $('table tr:nth-child(odd)') 

Quels sont les avantages et les inconvénients de chaque méthode? Je me pose principalement des questions sur la vitesse d’exécution et la prise en charge du navigateur.

La première méthode avec .filter(':odd') est probablement plus lente, car elle utilise un appel de méthode supplémentaire et utilise un sélecteur non standard. jQuery doit tout gérer dans ce cas.

La deuxième méthode sera potentiellement plus rapide dans les navigateurs modernes qui implémentent l’API Selectors et supportent la pseudo-classe :nth-child() , car votre sélecteur donné est un CSS valide. Le sélecteur sera donc évalué par le moteur de sélecteur d’un navigateur moderne plutôt que par jQuery. Dans d’autres navigateurs, je n’en ai aucune idée, mais je parierais quand même que la deuxième méthode est légèrement plus efficace car il y a au moins un appel de méthode en moins.

Dans les deux cas, il n’ya pas d’avantage (pratique) réel ni d’inconvénient à l’une ou l’autre méthode. En fait, je ne réponds que théoriquement – je n’ai pas vraiment de points de repère pour sauvegarder quoi que ce soit. De plus, il n’est pas nécessaire de s’inquiéter de la compatibilité du navigateur car jQuery polyfille de toute façon le sélecteur :nth-child() pour les navigateurs plus anciens.

La prise en charge du navigateur ne devrait pas être un problème, car jQuery fonctionne bien dans tous les navigateurs modernes: http://docs.jquery.com/Browser_Compatibility