2010-04-04 5 views
3
<div id="div"> 
    <div> <!-- first level --> 
     <div> <!-- second level --> 
      <div>1.1</div> <!-- third level --> 
      <div>1.2</div> 
     </div> 
     <div> 
      <div></div> 
      <div>2.2</div> 
     </div> 
    </div> 
</div> 

Quelles sont les expressions de sélection jQuery pour sélectionner les points suivants:
1. div commentées par premier niveau
2. divs commenté par second niveau
3. divs commenté par troisième niveaujQuery expression de sélection des enfants

+0

Veuillez ne pas utiliser "> div" comme sélecteur, car la balise html dom est dynamique. Il peut être div, ou peut être ul ou li –

+2

Assurez-vous d'accepter les réponses à vos questions en cliquant sur la coche à côté de la réponse qui vous a aidé à résoudre le problème, rend vos questions beaucoup plus souhaitable pour les répondants. –

Répondre

5

La clé de tous ces éléments est soit le sélecteur > (enfant) ou la méthode children().

Premier niveau:

$("#div > div")... 
$("#div").children("div")... 

Deuxième niveau:

$("#div > div > div")... 
$("#div").children("div").children("div")... 

Troisième niveau:

$("#div > div > div > div")... 
$("#div").children("div").children("div").children("div")... 

Si vous n'êtes pas intéressé par une étiquette particulière (par exemple div) alors simplement ne spécifiez pas de sélecteur sur children(). Par exemple, tous les éléments de deuxième niveau:

$("#div").children().children()... 
+0

s'il vous plaît voir mon commentaire –

5

Utilisez le sélecteur d'enfant immédiat > dans ce cas:

  • Premier niveau:
    • $("#div > div")
    • $("#div > *") (version générique)
  • Deuxième niveau:
    • $("#div > div > div")
    • $("#div > * > *") (versi générique sur)
  • Troisième niveau:
    • $("#div > div > div > div")
    • $("#div > * > * > *") (version générique)

Le est générique équivalent .children() sans sélecteur ainsi, par exemple:

$("#div").children() 
$("#div").children().children() 
$("#div").children().children().children() 
2

Exactement les mêmes que les sélecteurs CSS pour eux.

Edité pour vos nouvelles exigences:

#div > * 
#div > * > * 
#div > * > * > * 
+0

s'il vous plaît voir mon commentaire –

2
  1. $('#div > *') - Cela permet de sélectionner tous les tags une personne décédée directe de l'élément #div. Sans utiliser le sélecteur d'enfant >, vous obtiendrez tous les tags dans l'élément #div, et pas seulement le premier niveau.

  2. $('#div > * > *') - Même idée que # 1

  3. $('#div > * > * > *')

+0

s'il vous plaît voir mon commentaire –

0

ils sont vrais mais pour sélectionner spécifiquement vos premiers éléments, utilisez ceci;

first level : $("#div").children("div:first-child") 

Second level: $("#div:first-child").children("div:first-child").children("div:first-child") 

Third level: $("#div").children("div":first-child).children("div:first-child").children("div:first-child") 
Questions connexes