2010-07-09 3 views
1

Comment j'écris jQuery selector pour tester si li a ul qui a au moins un li qui n'est pas .disabled (peut être d'autres classes ou sans classe du tout).Filtrer les éléments qui n'ont pas seulement des enfants spécifiques

Oui, ça a l'air complexe mais c'est simple - j'ai besoin de savoir s'il y a des uls qui n'ont pas de classe "disabled" sur le lis interne.

Quelque chose comme

$("li").filter("*:has(ul:has(li:not(.disabled)))") 

Répondre

2

Vous pouvez raccourcir un peu, comme ceci:

$("li").filter(":has(ul li:not(.disabled))") 

You can try it here. Depuis le <li> est un enfant de <ul> vous pouvez simplement se référer à ce titre, pas besoin de l':has() selector supplémentaire confusion Sizzle (plusieurs :not() dans une chaîne le faire aussi bien).

moins qu'il y ait la possibilité d'un <ol> vous pourriez à distance la partie ul ainsi, juste avoir:

$("li").filter(":has(li:not(.disabled))") 
+0

J'ai fait « pas (.disabled) » hors de ma tête, ne pense pas que ce soit susceptible d'être un sélecteur jQuery valide ;-) Ce qui montre que la syntaxe des sélecteurs jQuery est très intuitive. Merci aussi pour le lien de l'outil Fiddle, très utile. – queen3

Questions connexes