Comment puis-je sélectionner un élément avec plusieurs classes dans jQuery?

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électeur de groupe: “,”

Sélectionnez tous les éléments

ET tous les éléments

ET tous les éléments :

 $('h1, p, a') 

Sélecteur multiple: “” (aucun caractère)

Sélectionnez tous éléments de type text , avec le code classes et le red :

 $('input[type="text"].code.red') 

Sélecteur de descendant: “” (espace)

Sélectionnez tous les éléments éléments

:

 $('p i') 

Sélecteur d’enfant: “>”

Sélectionnez tous les éléments

    qui sont des enfants immédiats d’un élément

  • :

     $('li > ul') 

    Sélecteur de frères et sœurs adjacents: “+”

    Sélectionnez tous les éléments placés immédiatement après les éléments

    :

     $('h2 + a') 

    Sélecteur général de frères et sœurs: “~”

    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