2010-03-12 3 views
7

J'ai ce code:Sélectionner tout de li mais pas les enfants

$li = $("li", this) 

Ce qui est la sélection de tous les li « s dans mon code. Cela fonctionne bien mais je veux $li pour exclure les li qui sont dans un sous-menu.

<ul id="navigation"> 
     <li><a href="#">blah 1</a></li> 
     <ul id="subnav"> 
      <li><a href="#">sub 1</a></li> 
      <li><a href="#">sub 2</a></li> 
      <li><a href="#">sub 3</a></li> 
     </ul> 
     </li> 
     <li><a href="#">blah 2</a></li> 
     <li><a href="#">blah 3</a></li> 
     <li><a href="#">blah 4</a></li> 
     <li><a href="#">blah 5</a></li> 
    </ul> 

Alors $li ne ferait que faire référence au blah ne sont pas les sous de.

Je pensais qu'il était quelque chose comme:

$li = $("li", this).parents() 

Mais cela ne fait pas ce que je veux.

Répondre

19

Il suffit d'utiliser le sélecteur d'enfant >:

$("#navigation > li") 
13

Vous souhaitez utiliser le sélecteur enfant immédiat, >:

$li = $('#navigation > li'); 
+1

@ David: regardez nos horodatages - exactement la même seconde :-) –

+1

@Andy: Impressionnant. +1 pour vous, alors. –

4
var li = $("#navigation > li"); 

Le > sélectionne uniquement les enfants directs

+1

+1 Tout le monde avait un crédit :-P – Jeremy

0

avenir Les googleurs peuvent trouver cette réponse utile si t hey sont ici (comme moi) à la recherche de Tout sélectionner Li sans enfants

$("#mylist li:not(:has(ul))") 

ou

$("#mylist li:not(:has(li))") 
Questions connexes