Chcę wybrać wszystkie elementy, które mają dwie klasy a
i b
.
<element class="a b">
Tak więc tylko elementy, które mają obie klasy.
Kiedy $(".a, .b")
go używam , daje mi związek, ale chcę skrzyżowania.
jquery
jquery-selectors
Mladen
źródło
źródło
Odpowiedzi:
Jeśli chcesz dopasować tylko elementy do obu klas (przecięcie, jak logiczne AND), po prostu napisz selektory razem bez spacji między:
Kolejność nie jest istotna, więc możesz także zamieniać klasy:
Tak aby dopasować
div
element, który ma identyfikatora
z klasb
ic
, byś napisać:(W praktyce, najprawdopodobniej nie trzeba się tego specyficznego i ID lub klasy selektor sama jest zwykle na tyle:
$('#a')
).źródło
b
ic
są dodawane dynamicznie, a element chcesz wybrać tylko wtedy, gdy ma te klasy..a .b
szuka elementów z klasą,b
które są potomkami elementu z klasąa
. Więc cośdiv a
zwróci jedyniea
elementy, które są w środku wdiv
elemencie.Możesz to zrobić za pomocą
filter()
funkcji:źródło
.a
i musisz wielokrotnie filtrować na podstawie różnych arbitralnych klas, które również należą do oryginalnego.a
zestawu.W przypadku
Musisz wstawić spację pomiędzy
.a
i.b.c
źródło
$('.a .c.b')
również działa?$('.a > element')
Problemem jest to, że używasz
Group Selector
, podczas gdy powinieneś używaćMultiples selector
! Mówiąc ściślej, używasz,$('.a, .b')
podczas gdy powinieneś używać$('.a.b')
.Aby uzyskać więcej informacji, zapoznaj się z omówieniem różnych sposobów łączenia selektorów poniżej!
Selektor grup: „,”
Wybierz wszystkie
<h1>
elementy ORAZ wszystkie<p>
elementy ORAZ wszystkie<a>
elementy:Selektor wielokrotności: „” (bez znaku)
Wybierz wszystkie
<input>
elementytype
text
, z klasamicode
ired
:Selector Descendant: „” (spacja)
Wybierz wszystkie
<i>
elementy wewnątrz<p>
elementów:Selektor potomków: „>”
Wybierz wszystkie
<ul>
elementy, które są bezpośrednimi elementami potomnymi<li>
elementu:Sąsiadujący selektor rodzeństwa: „+”
Wybierz wszystkie
<a>
elementy, które są umieszczane bezpośrednio po<h2>
elementach:Selektor generalny rodzeństwa: „~”
Wybierz wszystkie
<span>
elementy, które są rodzeństwem<div>
elementów:źródło
źródło
Wystarczy wspomnieć o innym przypadku z elementem:
Na przykład
<div id="title1" class="A B C">
Po prostu wpisz:
$("div#title1.A.B.C")
źródło
Waniliowe rozwiązanie JavaScript: -
document.querySelectorAll('.a.b')
źródło
Aby uzyskać lepszą wydajność, możesz użyć
Spowoduje to przejrzenie tylko elementów div zamiast przejścia przez wszystkie elementy HTML, które masz na swojej stronie.
źródło
Selektor grup
Staje się to:
Więc w twoim przypadku próbowałeś selektora grupy, podczas gdy jest to skrzyżowanie
zamiast tego użyj tego
źródło
Nie potrzebujesz
jQuery
tegoW
Vanilla
można zrobić:źródło
twój kod
$(".a, .b")
będzie działał dla wielu elementów (jednocześnie)jeśli chcesz wybrać element mający klasę a i b, podobnie
<element class="a b">
jak użyj js bez przecinkaźródło
Możesz użyć
getElementsByClassName()
metody do tego, co chcesz.Jest to również najszybsze rozwiązanie. widać odniesienia o tym tutaj .
źródło
var elem = document.querySelector (". ab");
źródło