2 votes

Sélectionnez tous les éléments qui ne sont pas des descendants d'un élément spécifié.

En utilisant un sélecteur jQuery, est-il possible de sélectionner tous les éléments qui ne sont pas des descendants des éléments d'un autre sélecteur.

Par exemple, je voudrais sélectionner toutes les a balises qui sont no un descendant d'un th étiquette. La seule façon que je vois de le faire pour le moment est la suivante :

$('a').filter(function () {
   return $(this).closest('th').size() == 0
})

7voto

Yi Jiang Points 28098

En supposant que vous cherchez des descendants (puisque vous avez une a en tant que frère de l'élément th n'est pas un élément HTML valide), vous pouvez utiliser la balise :not pour ce faire :

$('a:not(th a)');

Cela devrait être assez rapide dans les navigateurs modernes qui utilisent document.querySelectorAll mais peut être plus lent que l'original pour les anciennes versions d'IE.

Voir une démo simple ici : http://jsfiddle.net/JR5sP/

0voto

Petah Points 18432

En supposant que vous vouliez faire ce que votre question demande (sans tenir compte du fait que le HTML n'est pas valide) et filtrer les éléments ayant un frère ou une sœur spécifique,

Vous pouvez le faire :

$('a').filter(function() {
    return $(this).siblings('b').length == 0;
}).css('color', 'orange');

HTML :

<div>
    <b>Hello there</b>
    <a>Don't select me!</a>
</div>

<div>
    <a>Select me!</a>
    <a>Select me too!</a>
</div>

Véase http://jsfiddle.net/JR5sP/1/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X