Je veux sélectionner tous les éléments qui ont les deux classes a
et b
.
<element class="a b">
Donc, seuls les éléments qui ont les deux classes.
Quand je l'utilise $(".a, .b")
ça me donne l'union, mais je veux l'intersection.
jquery
jquery-selectors
Mladen
la source
la source
Réponses:
Si vous souhaitez faire correspondre uniquement les éléments avec les deux classes (une intersection, comme un ET logique), écrivez simplement les sélecteurs sans espaces entre les deux:
L'ordre n'est pas pertinent, vous pouvez donc également échanger les classes:
Donc, pour faire correspondre un
div
élément qui a un IDa
avec avec des classesb
etc
, vous écririez:(En pratique, vous n'avez probablement pas besoin d'obtenir ce détail, et un ID ou un sélecteur de classe suffit généralement:.
$('#a')
)la source
b
etc
sont ajoutées dynamiquement, et vous ne souhaitez sélectionner l'élément que s'il possède ces classes..a .b
recherche des éléments avec classeb
qui sont des descendants d'un élément avec classea
. Donc, quelque chose commediv a
ne retourneraa
que les éléments qui sont à l' intérieur d' undiv
élément.Vous pouvez le faire en utilisant la
filter()
fonction:la source
.a
et que vous devez filtrer plusieurs classes arbitraires basées sur plusieurs fois et qui appartiennent également à l'.a
ensemble d' origine .Pour le cas
Vous auriez besoin de mettre un espace entre
.a
et.b.c
la source
$('.a .c.b')
fonctionnerait-il également?$('.a > element')
Le problème que vous rencontrez est que vous utilisez un
Group Selector
, alors que vous devriez utiliser unMultiples selector
! Pour être plus précis, vous utilisez$('.a, .b')
alors que vous devriez utiliser$('.a.b')
.Pour plus d'informations, consultez l'aperçu des différentes façons de combiner les sélecteurs ci-dessous!
Sélecteur de groupe: ","
Sélectionnez tous les
<h1>
éléments ET tous les<p>
éléments ET tous les<a>
éléments:Sélecteur de multiples: "" (pas de caractère)
Sélectionnez tous les
<input>
éléments detype
text
, avec les classescode
etred
:Sélecteur de descendants: "" (espace)
Sélectionnez tous les
<i>
éléments à l'intérieur des<p>
éléments:Sélecteur d'enfant: ">"
Sélectionnez tous les
<ul>
éléments qui sont les enfants immédiats d'un<li>
élément:Sélecteur de frère adjacent: "+"
Sélectionnez tous les
<a>
éléments placés immédiatement après les<h2>
éléments:Sélecteur général de frères et sœurs: "~"
Sélectionnez tous les
<span>
éléments qui sont frères et sœurs d'<div>
éléments:la source
la source
Il suffit de mentionner un autre cas avec élément:
Par exemple
<div id="title1" class="A B C">
Tapez simplement:
$("div#title1.A.B.C")
la source
Solution JavaScript vanille: -
document.querySelectorAll('.a.b')
la source
Pour de meilleures performances, vous pouvez utiliser
Cela ne regardera que les éléments div au lieu de parcourir tous les éléments html que vous avez sur votre page.
la source
Sélecteur de groupe
Devient ceci:
Donc, dans votre cas, vous avez essayé le sélecteur de groupe alors que c'est une intersection
utilisez plutôt ceci
la source
Vous n'avez pas besoin
jQuery
de cetteEn
Vanilla
vous pouvez faire:la source
votre code
$(".a, .b")
fonctionnera pour plusieurs éléments ci-dessous (en même temps)si vous voulez sélectionner un élément ayant a et b à la fois comme
<element class="a b">
utiliser js sans comala source
Vous pouvez utiliser la
getElementsByClassName()
méthode pour ce que vous voulez.C'est aussi la solution la plus rapide. vous pouvez voir une référence à ce sujet ici .
la source
var elem = document.querySelector (". ab");
la source