2010-01-06 6 views
3

J'ai un menu à plusieurs niveaux comme celui-ci:jQuery ajouter la classe à certains éléments

<ul> 
    <li>item 1 
    <ul> 
     <li>item 1.1</li> 
     <li>item 1.2</li> 
    </ul> 
    </li> 
    <li>item 2</li> 
    <li>item 3 
    <ul> 
     <li>item 3.1</li> 
     <li>item 3.2</li> 
    </ul> 
    </li> 
    <li>item 4</li> 
</ul> 

jQuery Je

$("#divId ul li:odd").addClass("blue"); 
$("#divId ul li:even").addClass("green"); 

Le problème est que jQuery ajoute la classe à toutes les listes. Je voudrais jQuery juste ajouter la classe au premier niveau (ul> li.class) et non les Childs internes (ul> li> ul> li.class)

Merci

+1

Yeeees ... et puis? – jensgram

+0

Ajouter une classe à cet élément? – Anurag

+6

Vous avez un menu à plusieurs niveaux comme * QUE *? Continuez! Peut-être avec une question? – zombat

Répondre

3

Cela devrait fonctionner:

$("#divId ul:first > li:odd").addClass("blue"); 
$("#divId ul:first > li:even").addClass("green"); 

Il ajoutera les classes aux enfants de la première balise ul trouvé dans idDiv.

+0

Cela fonctionne parfaitement. Merci! –

0

Pouvez-vous, s'il vous plaît , donnez plus d'informations sur votre cas. D'après ce que je vois, vous devez sélectionner et ajouter une classe. Vous trouverez des informations sur jquery selectors here et addClass method here

1

Je vais utiliser des hypothèses ici et vous vous savez ce qu'ils disent à leur sujet;)

Si vous voulez ajouter des classes spécifiques à tous les éléments ul puis :

$('ul').addClass('class-addition'); 

et vous pouvez définir le style des éléments de liste de la même manière.

Si vous voulez ajouter des classes à ul dans un li vous pouvez utiliser:

$('li > ul').addClass('class-addition'); 

à l'aide des parents> sélecteurs d'enfant.

Je jetterais un coup d'oeil à la documentation des sélecteurs fournie par Branislav pour trouver exactement ce que vous voulez et utiliser firebug pour tester les résultats.

2

vous pouvez essayer:

$("#divId ul li:not(#divId ul li ul li):odd").addClass("blue"); 
$("#divId ul li:not(#divId ul li ul li):even").addClass("green"); 
+0

Cela fonctionne aussi! Merci beaucoup! –

Questions connexes