2010-05-04 4 views
1

Quel est le problème avec ce sélecteur jQuery?jQuery: Sélecteur confusion

$("#masterHeaderMenu.masterHeaderMenuButton a:first") 

Je suis l'intention de sélectionner la première balise d'ancrage qui est un enfant d'un élément dont la classe est « masterHeaderMenuButton », lui-même un enfant de l'élément avec un « id » valeur d'attribut de « masterHeaderMenu ».

Impossible de faire cela dans jQuery?

Répondre

6

Vous avez besoin d'un espace supplémentaire là-dedans, comme ceci:

$("#masterHeaderMenu .masterHeaderMenuButton a:first") 

Sans l'espace, #masterHeaderMenu.masterHeaderMenuButton est à la recherche d'un élément qui a id="masterHeaderMeny"etclass="masterHeaderMenuButton", avec l'espace, il est dit trouver class="masterHeaderMenuButton" qui est un descendant du #masterHeaderMeny, pas le même élément.

Si vous voulez aller dans un certain nombre de niveaux, ajoutez un espace, si vous voulez descendre seulement un niveau, utilisez >, cela signifie seulement aller vers le bas pour les enfants immédiats.

+0

+1 pour la mention directe Decendent '>' – gnarf

4

Vous pouvez. Vous avez besoin d'un espace entre le premier élément (ID) et la deuxième (classe):

$("#masterHeaderMenu .masterHeaderMenuButton a:first") 

Votre sélection avait l'air d'un élément qui avait l'ID « masterHeaderMenu » et classe CSS « ​​masterHeaderMenuButton ».

0

Il n'est pas nécessaire de spécifier la classe. Si vous donnez le nom d'identification dans le sélecteur lui-même est suffisant. Un ID peut représenter un seul élément html dans le document. mais la classe peut représenter un groupe d'éléments html.

$("#masterHeaderMenu .masterHeaderMenuButton a:first") 

ce sélecteur peut prendre du temps. le même résultat peut être obtenir de ce code $("#masterHeaderMenu a:first")

+0

Ceci est incorrect, s'il a 20 éléments sous '# masterHeaderMenu' avec des liens de votre réponse « même résultat » obtiendra le premier lien de tous, pas le premier lien de celui avec cette classe, ils sont ** pas ** identiques. –

+0

J'avais tort! Je pensais qu'il avait l'intention de sélectionner la première balise d'ancrage qui est un enfant d'un élément dont la classe est "masterHeaderMenuButton", et il a l'ID "masterHeaderMenu". – user3774128