2009-12-13 7 views
3

Je veux écrire un sélecteur qui cible le premier élément qui n'a pas de classe spécifique.Sélectionner le premier élément qui n'a pas de classe spécifique

<ul> 
<li class="someClass">item 1</li> 
<li>item 2</li> <-- I want to select this 
<li class="someClass">item 3</li> 
<li>item 4</li> 
</ul> 

Je sais comment sélectionner tous les éléments qui ne dispose pas des « someClass »:

$('li not:(.someClass)').dostuff(); 

Mais je ne sais pas comment ne sélectionner que le premier élément qui n'a pas « someClass ".

Quelqu'un sait-il comment faire?

Répondre

5
$('li:not(.someClass):first') 

Voici une démonstration de travail: http://jsbin.com/arosa

+0

Je pense que c'est une belle solution que d'utiliser le filtre eq (0) - probablement plus efficace – Andiih

0

essayer

$('li first-child not:(.someClass)').dostuff() 
+2

I * pense * ce ciblerait le premier enfant SI il n'a pas de classe plutôt que le premier enfant qui n'a pas de classe ... mais je ne l'ai pas testé (ou ma solution non plus!) – Andiih

1

voir http://docs.jquery.com/Core/eq

$('li not:(.someClass)').eq(0).dostuff(); 

mais comme l'a probablement son

$('li:not(.someClass)').eq(0).dostuff(); 

quelle que soit eq(0) choisira le premier élément

1

Vous avez juste une faute de frappe, la syntaxe est :not():

$('li:not(.someClass)').eq(0) 
1

Essayez ceci:

alert($('li:not(li.someClass)').eq(0).html()); 
Questions connexes