Ich möchte alle Elemente auswählen, die die beiden Klassen a
und haben b
.
<element class="a b">
Also nur die Elemente, die beide Klassen haben.
Wenn ich es benutze $(".a, .b")
, gibt es mir die Vereinigung, aber ich möchte die Kreuzung.
jquery
jquery-selectors
Mladen
quelle
quelle
Antworten:
Wenn Sie nur Elemente mit beiden Klassen abgleichen möchten (ein Schnittpunkt wie ein logisches UND), schreiben Sie die Selektoren einfach ohne Leerzeichen dazwischen zusammen:
Die Reihenfolge ist nicht relevant, daher können Sie auch die Klassen austauschen:
Um also ein
div
Element mit einer ID vona
mit Klassenb
undc
abzugleichen, würden Sie schreiben:(In der Praxis müssen Sie höchstwahrscheinlich nicht so spezifisch sein, und eine ID oder Klassenauswahl allein reicht normalerweise aus :
$('#a')
.)quelle
b
undc
dynamisch hinzugefügt werden und Sie das Element nur auswählen möchten, wenn es diese Klassen enthält..a .b
sucht nach Elementen mit Klasseb
, die Nachkommen eines Elements mit Klasse sinda
. So etwas wiediv a
gibt nura
Elemente zurück, die sich innerhalb einesdiv
Elements befinden.Sie können dies mit der
filter()
Funktion tun :quelle
.a
und mehrmals basierend auf verschiedenen beliebigen Klassen filtern müssen, die ebenfalls zum ursprünglichen.a
Satz gehören.Im Falle
Sie müssten ein Leerzeichen zwischen
.a
und setzen.b.c
quelle
$('.a .c.b')
auch funktionieren?$('.a > element')
Das Problem, das Sie haben, ist, dass Sie ein verwenden
Group Selector
, während Sie ein verwenden solltenMultiples selector
! Um genauer zu sein, verwenden Sie,$('.a, .b')
während Sie verwenden sollten$('.a.b')
.Weitere Informationen finden Sie in der Übersicht über die verschiedenen Möglichkeiten, Selektoren zu kombinieren.
Gruppenauswahl: ","
Wählen Sie alle
<h1>
Elemente UND alle<p>
Elemente UND alle<a>
Elemente aus:Mehrfachauswahl: "" (kein Zeichen)
Wählen Sie alle
<input>
Elemente austype
text
, mit Klassencode
undred
:Nachkommenauswahl: "" (Leerzeichen)
Wählen Sie alle
<i>
Elemente in<p>
Elementen aus:Untergeordnete Auswahl: ">"
Wählen Sie alle
<ul>
Elemente aus, die einem<li>
Element unmittelbar untergeordnet sind:Angrenzender Geschwister-Selektor: "+"
Wählen Sie alle
<a>
Elemente aus, die unmittelbar nach den<h2>
Elementen platziert werden:Allgemeine Geschwisterauswahl: "~"
Wählen Sie alle
<span>
Elemente aus, die Geschwister von<div>
Elementen sind:quelle
quelle
Erwähnen Sie einfach einen anderen Fall mit Element:
Z.B
<div id="title1" class="A B C">
Tippe einfach:
$("div#title1.A.B.C")
quelle
Vanilla JavaScript-Lösung: -
document.querySelectorAll('.a.b')
quelle
Für eine bessere Leistung können Sie verwenden
Dies wird nur durch die div-Elemente schauen, anstatt durch alle HTML-Elemente zu gehen, die Sie auf Ihrer Seite haben.
quelle
Gruppenauswahl
Wird dies:
In Ihrem Fall haben Sie also die Gruppenauswahl ausprobiert, während es sich um eine Kreuzung handelt
Verwenden Sie stattdessen diese
quelle
Sie brauchen nicht
jQuery
für dieseIn können
Vanilla
Sie tun:quelle
Ihr Code
$(".a, .b")
funktioniert für mehrere Elemente gleichzeitig (gleichzeitig)Wenn Sie ein Element mit a und b auswählen möchten,
<element class="a b">
verwenden Sie js ohne Komaquelle
Sie können die
getElementsByClassName()
Methode für das verwenden , was Sie wollen.Dies ist auch die schnellste Lösung. Sie können einen Benchmark sehen , dass hier .
quelle
var elem = document.querySelector (". ab");
quelle