10
votes

jQuery Selectors - où article n'a pas d'enfants avec une certaine classe

Je veux sélectionner des éléments de liste qui sont des enfants immédiats de #nav, qui n'ont pas eux-mêmes d'enfants immédiats avec une classe «active».

C'est ce que je pense que cela devrait être, mais cela ne fonctionne pas: xxx


0 commentaires

4 Réponses :


0
votes

pour cette jQuery a le non sélecteur

Vous pouvez faire quelque chose comme < / p> xxx


4 commentaires

Ce n'est pas ce que Trevor recherche. Il veut Les enfants de #nav, qui n'ont pas eux-mêmes d'eux-mêmes des enfants immédiats avec une classe "active" .


a manqué l'un des enfants là-bas, corrigé cela.


Les éléments qu'il souhaite sélectionner sont les éléments LI. Votre sélecteur retournerait leurs enfants.


Bon point, le libellé est un peu difficile, mais je vois ce qu'il cherche, reviendra à nouveau.



3
votes

J'aime vraiment la solution de Ken, mais juste pour une autre prise.

Vous pouvez ajouter la classe active à vos éléments de liste au lieu de vos liens à l'intérieur. Ensuite, votre sélecteur pourrait ressembler à: p> xxx pré>

Si vous souhaitez styler les liens en fonction de la classe active, votre CSS pourrait ressembler à ceci: P>

#nav li.active a{background-color:red;}


3 commentaires

Pourquoi cette réponse a-t-elle été évitée deux fois? S'il est incorrect, quelle partie ne fonctionne pas et comment puis-je l'améliorer?


Cette réponse est incorrecte car elle renvoie les enfants de li . Trevor veut le li éléments eux-mêmes. Re-lisez la question.


Merci! J'ai raté cette partie, je vais changer ma réponse pour refléter cela.



11
votes

Vous devrez utiliser le filtre JQuery's's's's's's's's CODE> Fonction:

$('#nav > li').filter(function() { return !($(this).children().is('.active')); })


9 commentaires

C'est encore mieux que votre première solution. Je pense que vous auriez dû garder celui-là quelque part comme alternatif. Ou y avait-il un problème avec ça?


Non, celui-ci semble fonctionner par intermittence. Je retourne à la réponse précédente.


Cela retournera Li éléments qui n'ont pas d'actif, je ne crois pas que cela vérifie les enfants des éléments LI pour la classe active.


Je pense Jeremy b. a raison. La solution «Sélecteur uniquement» ne semble pas tester contre les enfants, mais plutôt le Li uniquement.


Je suis d'accord. Sortez la réponse seulement et laissant le fichier


@Ken: bon appel. J'allais offrir une réponse qui utilisait chacun () , mais filtre () est une solution beaucoup plus belle.


Merci Ken, c'est parfait ... et merci à tous les autres pour leur aide!


@ Trevor, content que vous ayez trouvé votre réponse et bienvenue à Stackoverflow! Veuillez cliquer sur la coche de la réponse de Ken afin qu'il soit crédité pour la solution.


@Trevor, ce n'est pas comme ça que tu le fais! Voir ma réponse: $ ('# Nav> Li: non (: a (A.active))'). Je ne pense pas que vous ayez accepté la meilleure réponse.



28
votes

Voici comment vous le faites:

    $('#nav > li:not(:has(a.active))')


0 commentaires