Ik wil alle elementen selecteren die de twee klassen a
en b
hebben.
<element class="a b">
Dus alleen de elementen die beideklassen hebben.
Als ik $(".a, .b")
gebruik, krijg ik de vakbond, maar ik wil de kruising.
Antwoord 1, autoriteit 100%
Als je alleen elementen wilt matchen met beideklassen (een intersectie, zoals een logische AND), schrijf dan de selectors samen zonder spatiesertussen:
$('.a.b')
De volgorde is niet relevant, dus je kunt de klassen ook omwisselen:
$('.b.a')
Dus om een div
-element met een ID van a
te matchen met de klassen b
en c
, moet je zou schrijven:
$('div#a.b.c')
(In de praktijk heb je dat specifieke waarschijnlijk niet nodig, en een ID- of klassenkiezer op zich is meestal voldoende: $('#a')
.)
Antwoord 2, autoriteit 6%
U kunt dit doen met de functie filter()
:
$(".a").filter(".b")
Antwoord 3, autoriteit 5%
Voor het geval
<element class="a">
<element class="b c">
</element>
</element>
U moet een spatie plaatsen tussen .a
en .b.c
$('.a .b.c')
Antwoord 4, autoriteit 3%
Het probleem dat u ondervindt, is dat u een Group Selector
gebruikt, terwijl u een Multiples selector
zou moeten gebruiken! Om specifieker te zijn, je gebruikt $('.a, .b')
terwijl je $('.a.b')
zou moeten gebruiken.
Voor meer informatie, zie hieronder het overzicht van de verschillende manieren om selectors te combineren!
Groepskiezer: “,”
Selecteer alle <h1>
elementen EN alle <p>
elementen EN alle <a>
elementen :
$('h1, p, a')
Selectie meervouden: “” (geen teken)
Selecteer alle <input>
elementen van type
text
, met klassen code
en red
:
$('input[type="text"].code.red')
Afstammelingkiezer: ” ” (spatie)
Selecteer alle <i>
elementen binnen <p>
elementen:
$('p i')
Kinderselectie: “>”
Selecteer alle <ul>
elementen die directe onderliggende elementen zijn van een <li>
element:
$('li > ul')
Aangrenzende broer/zus-kiezer: “+”
Selecteer alle <a>
elementen die direct na <h2>
elementen worden geplaatst:
$('h2 + a')
Algemene broer/zus-kiezer: “~”
Selecteer alle <span>
elementen die broers en zussen zijn van <div>
elementen:
$('div ~ span')
Antwoord 5
$('.a .b , .a .c').css('border', '2px solid yellow');
//selects b and c
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="a">a
<div class="b">b</div>
<div class="c">c</div>
<div class="d">d</div>
</div>
Antwoord 6
Noem gewoon een ander geval met element:
Bijvoorbeeld <div id="title1" class="A B C">
Typ gewoon: $("div#title1.A.B.C")
Antwoord 7
Vanille JavaScript-oplossing:-
document.querySelectorAll('.a.b')
Antwoord 8
Voor betere prestaties kunt u gebruiken
$('div.a.b')
Hiermee wordt alleen door de div-elementen gekeken in plaats van door alle html-elementen op uw pagina te gaan.
Antwoord 9
Groepskiezer
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;}
Wordt dit:
body, th, td {font-size: 12px; font-family: arial, helvetica, sans-serif;}
Dus in jouw geval heb je de groepskiezer geprobeerd terwijl het een kruising is
$(".a, .b")
gebruik dit in plaats daarvan
$(".a.b")
Antwoord 10
uw code $(".a, .b")
werkt voor onder meerdere elementen (tegelijkertijd)
<element class="a">
<element class="b">
als je een element wilt selecteren met a en b beide klasse zoals <element class="a b">
gebruik dan js zonder komma
$('.a.b')
Antwoord 11
Hiervoor heb je jQuery
niet nodig
In Vanilla
kun je het volgende doen:
document.querySelectorAll('.a.b')
Antwoord 12
Je kunt de methode getElementsByClassName()
gebruiken voor wat je wilt.
var elems = document.getElementsByClassName("a b c");
elems[0].style.color = "green";
console.log(elems[0]);
<ul>
<li class="a">a</li>
<li class="a b">a, b</li>
<li class="a b c">a, b, c</li>
</ul>
Antwoord 13
Het onderstaande voorbeeld geeft u een idee over het selecteren van meerdere geneste klassenkiezers en directe klassenkiezers in één regel
//Here is Explaination of Selectors
//.a .b .c = selects nested child c which is inside of div a and b
//.a .d = selects nested child d which is inside of div a
//.f = selects direct element ie div f which is outside of div a and b
$('.a .b .c , .a .d, .f').css('background-color', 'grey');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="a">a
<div class="b">b
<div class="c">c</div>
</div>
<div class="d">d</div>
</div>
<div class="e">e</div>
<div class="f">f</div>