Plus rapide sélecteur de méthode en jquery et CSS - ID ou pas?

Ce qui est le plus rapide en jquery/javascript?

$('#myID .myClass')

ou

$('.myClass')

Ce qui est le mieux pour l'utiliser en CSS?

#myID .myClass{}

ou

.myClass{}

Je vois maintenant que je l'ai expliqué mieux. Désolé!

Ofceauce ID est plus rapide d'un sélecteur CSS et JavaScript. Mais parfois, vous devez utiliser la classe puisqu'il y a plusieurs sélecteurs.

Dire par exemple que j'ai j'ai de GROS document html. Dans le milieu de la page j'ai:

<div id="myID">

<a class="myClass">link1</a>

<a class="myClass">link1</a>

<a class="myClass">link1</a>

</div>

Si je veux cible de tous les "myClass". Il serait préférable de cibler l'ID avant de cibler les classes? (alors je ne voudrais pas avoir à faire domtravel de l'ensemble du document HTML) Ex.:

Serait-ce:

$('#monid').find('.maclasse')

Être plus rapide que l':

$('.maclasse')

Je suis désolé, mais il devrait être seulement un élément avec un ID spécifique de sorte que la première pourrait être simplement $('#myID') ou suis-je malentendu vous?
Les différents navigateurs ont différents DOM méthodes de sélection utilisées, donc il n'existe pas une seule réponse correcte. Dans les anciens navigateurs, faire $('#myID').find('.myClass') est probablement le plus rapide. Dans les nouveaux navigateurs, j'ai le sentiment que vous ne verrez pas beaucoup de différence, sauf si vous avez un horriblement vaste et complexe de la page.
Merci à tous pour vos commentaires. En fait, j'ai un "horriblement VASTE et complexe de la page". C'est ce qui m'a fait poser la question, mais je ne se soucient des navigateurs modernes.
Selon votre définition de "moderne", les navigateurs modernes allons utiliser le natif querySelectorAll méthode, qui est généralement très rapide. Mais soyez prudent. Grésillement (jQuery sélecteur moteur) ajoute non-standard de sélecteurs qui querySelectorAll ne peut pas tolérer. Donc, si vous utilisez l'un de ces, le contrôle est donné à son propre JavaScript basé sur le moteur, ce qui est beaucoup plus lent. Je pense que de toute façon, $('#myID').find('.myClass') sera très rapide.

OriginalL'auteur Hakan | 2011-05-17