Je veux sélectionner tous les éléments qui ont les deux classes a
et b
.
Donc, seuls les éléments qui ont les deux classes.
Quand j’utilise $(".a, .b")
cela me donne l’union, mais je veux l’intersection.
Si vous voulez une intersection, écrivez simplement les sélecteurs sans espaces entre eux.
$('.a.b')
Donc, pour un élément qui a un identifiant de a
avec les classes b
et c
, vous écrivez:
$('#abc')
Vous pouvez le faire en utilisant la fonction filter()
:
$(".a").filter(".b")
Pour le cas
Vous devriez mettre un espace entre .a
et .bc
$('.a .b.c')
Le problème que vous rencontrez est que vous utilisez un Group Selector
, alors que vous devriez utiliser un Multiples selector
! Pour être plus précis, vous utilisez $('.a, .b')
alors que vous devriez utiliser $('.a.b')
.
Pour plus d’informations, consultez la vue d’ensemble des différentes manières de combiner les sélecteurs ci-dessous!
Sélectionnez tous les éléments
ET tous les éléments
$('h1, p, a')
Sélectionnez tous éléments
de
type
text
, avec le code
classes et le red
:
$('input[type="text"].code.red')
Sélectionnez tous les éléments éléments
:
$('p i')
Sélectionnez tous les éléments
qui sont des enfants immédiats d’un élément
:
$('li > ul')
Sélectionnez tous les éléments placés immédiatement après les éléments
:
$('h2 + a')
Sélectionnez tous les éléments qui sont des frères et soeurs d’éléments
:
$('div ~ span')
$('.a .b , .a .c').css('border', '2px solid yellow'); //selects b and c
a b c d
Il suffit de mentionner un autre cas avec élément:
Par exemple,
Tapez simplement: $("div#title1.ABC")
Solution JavaScript Vanilla: –
document.querySelectorAll('.a.b')
Pour de meilleures performances, vous pouvez utiliser
$('div.a.b')
Cela ne regardera que par les éléments div au lieu de parcourir tous les éléments HTML que vous avez sur votre page.
Sélecteur de groupe
body {font-size: 12px; } body {font-family: arial, helvetica, sans-serif;} th {font-size: 12px; font-family: arial, helvetica, sans-serif;} td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
Devient ceci:
body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
Donc, dans votre cas, vous avez essayé le sélecteur de groupe alors que c’est une intersection
$(".a, .b")
utilisez plutôt cette
$(".ab")
Vous n’avez pas besoin de jQuery
pour cela
Dans Vanilla
tu peux faire:
document.querySelectorAll('.a.b')
Vous pouvez utiliser la méthode getElementsByClassName()
pour ce que vous voulez.
var elems = document.getElementsByClassName("abc"); elems[0].style.color = "green"; console.log(elems[0]);
- a
- a, b
- a, b, c