97 votes

jQuery Détermine si une classe correspondante a un identifiant donné

Qu'est-ce que jQuery a id équivalent à l'instruction suivante?

 $('#mydiv').hasClass('foo')
 

afin que vous puissiez donner un nom de classe et vérifier qu'il contient un identifiant fourni.

quelque chose comme:

 $('.mydiv').hasId('foo')
 

175voto

Jonathan Sampson Points 121800

Vous pouvez faire cuire de cette logique dans le sélecteur de par la combinaison de plusieurs sélecteurs. Par exemple, nous pourrions cibler tous les éléments avec un id donné, qui ont aussi une classe particulière:

$("#foo.bar"); // Matches <div id="foo" class="bar">

Cela devrait ressembler à quelque chose que vous voulez écrire dans le CSS. Notez qu'il ne s'applique pas à tous #foo éléments (bien qu'il ne devrait être qu'un), et il ne s'applique pas à tous .bar éléments (s'il peut y avoir plusieurs). Il va uniquement faire référence à des éléments qui entrent sur les deux attributs.

jQuery a aussi un grand .is méthode qui permet de déterminer si un élément possède certaines qualités. Vous pouvez tester jQuery collection à l'encontre d'un sélecteur de chaîne, un Élément HTML, ou un autre objet jQuery. Dans ce cas, nous allons le vérifier à l'encontre d'une chaîne de sélecteur:

$(".bar:first").is("#foo"); // TRUE if first '.bar' in document is also '#foo'

44voto

prodigitalson Points 38549

J'utiliserais probablement $('.mydiv').is('#foo'); Cela dit, si vous connaissez l'identifiant, pourquoi ne l'appliqueriez-vous pas simplement au sélecteur en premier lieu?

19voto

ewwink Points 424

Je connais sa vieille question, mais elle reste toujours en tête des résultats Google. Les nouvelles fonctions jQuery fournissent la fonction has ()

 $('.mydiv').has('#foo')
 

#foo est ton identifiant

4voto

Pointy Points 172438
$('#' + theMysteryId + '.someClass').each(function() { /* do stuff */ });

4voto

Stella Points 31

Juste pour dire que j'ai finalement résolu ce problème à l'aide d'index().

RIEN d'autre ne semblait fonctionner.

Donc, pour les éléments frères c'est un bon travail si vous êtes en sélectionnant d'abord par une classe commune et que vous souhaitez modifier quelque chose différemment pour chaque spécifique.

EDIT: pour ceux qui ne connaissent pas (comme moi), index() donne la valeur de l'indice pour chaque élément qui correspond au sélecteur, à compter à partir de 0, en fonction de leur ordre dans le DOM. Tant que vous savez combien il y a d'éléments class="foo" vous n'avez pas besoin d'un id.

Évidemment, ce ne sera pas toujours en mesure d'aider, mais quelqu'un pourrait trouver utile.

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