jQuery ajoute une classe à certains éléments

J’ai un menu à plusieurs niveaux comme celui-ci:

  • item 1
    • item 1.1
    • item 1.2
  • item 2
  • item 3
    • item 3.1
    • item 3.2
  • item 4

En jQuery j’ai

 $("#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 que jQuery ajoute simplement la classe au premier niveau (ul> li.class) et PAS aux enfants internes (ul> li> ul> li.class)

Merci

Cela devrait fonctionner:

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

Il appenda les classes aux enfants de la première balise ul trouvée dans divId.

tu pourrais 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"); 

Je vais utiliser des hypothèses ici et vous savez ce qu’elles en disent;)

Si vous souhaitez append des classes spécifiques à tous les éléments ul, alors:

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

et vous pouvez styliser les éléments de la liste de la même manière.

Si vous voulez append des classes au ul dans un li, vous pouvez utiliser:

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

en utilisant le parent> sélecteurs enfants.

Je regarderais la documentation de sélecteurs fournie par Branislav pour trouver exactement ce que vous voulez et utiliser firebug pour tester les résultats.

Pouvez-vous, s’il vous plaît, donner plus d’informations sur votre cas. De ce que je vois, vous devez sélectionner et append une classe. Vous pouvez trouver des informations sur les sélecteurs jquery ici et sur la méthode addClass ici