Ist es möglich, eine Suche mit querySelectorAll unter Verwendung mehrerer nicht zusammenhängender Bedingungen durchzuführen? Wenn ja wie? Und wie kann man angeben, ob dies UND- oder ODER-Kriterien sind?
Beispielsweise:
Wie alle finden Form s, p s und Legende s mit einem einzigen querySelectorAll Anruf? Möglich?
javascript
Alan Coromano
quelle
quelle
Antworten:
Ja, da
querySelectorAll
vollständige CSS-Selektoren akzeptiert werden und CSS das Konzept von Selektorgruppen hat , mit denen Sie mehr als einen nicht verwandten Selektor angeben können. Zum Beispiel:... gibt eine Liste zurück, die ein Element enthält, das ein
form
oderp
oder istlegend
.CSS hat auch das andere Konzept: Einschränkung basierend auf mehr Kriterien. Sie kombinieren einfach mehrere Aspekte eines Selektors. Zum Beispiel:
... gibt eine Liste aller
div
Elemente zurück, die auch ( und ) die Klasse habenfoo
, wobei anderediv
Elemente ignoriert werden.Sie können sie natürlich kombinieren:
... was bedeutet "Schließen Sie jedes
div
Element ein, das auch diefoo
Klasse enthält, jedesp
Element, das auch diebar
Klasse enthält, und jedeslegend
Element, das sich ebenfalls in a befindetdiv
."quelle
Gemäß der Dokumentation können Sie wie bei jedem CSS-Selektor so viele Bedingungen angeben, wie Sie möchten, und diese werden als logisches "ODER" behandelt.
Quelle: https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll
Um die 'UND'-Funktionalität zu erhalten, können Sie zum Beispiel einfach einen Multiattribut-Selektor verwenden, wie jquery sagt:
https://api.jquery.com/multiple-attribute-selector/
Ex.
"input[id][name$='man']"
Gibt sowohl die ID als auch den Namen des Elements an und beide Bedingungen müssen erfüllt sein. Für Klassen ist es so offensichtlich wie ".class1.class2
", ein Objekt von 2 Klassen zu benötigen.Alle möglichen Kombinationen von beiden sind gültig, sodass Sie leicht gleichwertigere Ausdrücke für 'ODER' und 'UND' erhalten können.
quelle
Ja,
querySelectorAll
nimmt eine Gruppe von Selektoren :quelle
Mit reinem JavaScript können Sie dies tun (z. B. SQL) und alles, was Sie brauchen, im Grunde:
quelle
how to specify whether those are AND or OR criteria
Teil, siehe akzeptierte Antwort