Y a-t-il un moyen dans jQuery de vérifier si un parent, un grand-parent, un arrière-grand-parent a une classe.
J'ai une structure de balisage qui m'a laissé faire ce genre de chose dans le code:
$(elem).parent().parent().parent().parent().hasClass('left')
Cependant, pour la lisibilité du code, j'aimerais éviter ce genre de chose. Y a-t-il un moyen de dire «un parent / grand-parent / arrière-grand-parent a cette classe»?
J'utilise jQuery 1.7.2.
javascript
jquery
html
jquery-selectors
jquery-1.7
crmpicco
la source
la source
Réponses:
la source
.length
comme une valeur de vérité est assez prolifique dans JS, elle est beaucoup plus claire et plus facile à comprendre.length > 0
Il existe de nombreuses façons de filtrer les ancêtres des éléments.
Attention , la
closest()
méthode inclut l'élément lui-même lors de la vérification du sélecteur.Sinon, si vous avez un sélecteur unique correspondant à
$elem
, par exemple#myElem
, vous pouvez utiliser:Si vous souhaitez faire correspondre un élément en fonction de l'une de ses classes ancêtres à des fins de style uniquement, utilisez simplement une règle CSS :
la source
Is there any way in jQuery to check if any parent,...
,closest()
chèque élément lui - même si ce n'est pas question vraiment la réponse, OP pourrait vouloir exclure explecitely l'élément lui - même, donc ya, réponse était d'utiliser.parents()
Vous pouvez utiliser la
parents
méthode avec le.class
sélecteur spécifié et vérifier si l'un d'eux correspond:la source