Ich denke darüber nach, ob es in jQuery möglich ist, Elemente anhand benannter Attribute mit AND und OR auszuwählen.
Beispiel:
<div myid="1" myc="blue">1</div>
<div myid="2" myc="blue">2</div>
<div myid="3" myc="blue">3</div>
<div myid="4">4</div>
Ich möchte alle Elemente auswählen, bei denen myc="blue"
jedoch nur diejenigen mit myid
1 oder 3 festgelegt sind.
Also habe ich versucht:
a=$('[myc="blue"] [myid="1"] [myid="3"]');
aber es funktioniert nicht, gleich hier:
a=$('[myc="blue"] && [myid="1"] || [myid="3"]');
Ist es möglich, ohne spezielle Filterfunktionen zu schreiben?
jquery
jquery-selectors
find
operators
Der Bndr
quelle
quelle
myc
und ausdenkenmyid
. Wenn Sie HTML5 verwenden, stellen Sie ihnen Folgendes vorandata-
:data-myc
unddata-myid
.Antworten:
UND- Betrieb
ODER- Operation, Kommas verwenden
Wie @Vega kommentierte:
quelle
myc == blue && (id == 1 || id == 3)
a=$('[myc="blue"] [myid="1"],[myid="3"]');
heißt das,([myc="blue"] AND [myid="1"]) OR [myid="3"]
oder([myc="blue"]) AND ([myid="1"] OR [myid="3"])
ich suche nach dem 2. // Bearbeiten: Danke für das Update! :-)Einfache Verwendung von
.filter()
[docs] (AND) mit dem Mehrfachselektor [docs] (OR):Im Allgemeinen ist das Verketten von Selektoren wie
a.foo.bar[attr=value]
eine Art UND-Selektor.jQuery verfügt über eine umfangreiche Dokumentation zu den unterstützten Selektoren. Es lohnt sich, sie zu lesen.
quelle
Wie wäre es, einen Filter wie unten zu schreiben?
Edit: @Jack Danke .. total verpasst ..
DEMO
quelle
Der Operator und in einem Selektor ist nur eine leere Zeichenfolge, und der Operator oder ist das Komma.
Es gibt jedoch keine Gruppierung oder Priorität, sodass Sie eine der folgenden Bedingungen wiederholen müssen:
quelle
blue
, aber ich war mir bei numerischen Werten nicht sicher, also habe ich sie beibehalten.Suchen Sie zuerst die Bedingung, die in allen Situationen auftritt, und filtern Sie dann die speziellen Bedingungen:
quelle
In Ihrem speziellen Fall wäre es
quelle
JQuery verwendet CSS-Selektoren, um Elemente auszuwählen. Sie müssen also nur mehr als eine Regel verwenden, indem Sie sie durch Kommas trennen.
Bearbeiten:
Entschuldigung, Sie wollten blau und 1 oder 3. Wie wäre es mit:
Wenn Sie die beiden Attributselektoren zusammenfügen, erhalten Sie UND, wenn Sie ein Komma verwenden, erhalten Sie ODER.
quelle
myc == blue && (id == 1 || id == 3)
[myc="blue"]
Selektor im zweiten Beispiel wiederholen .Um die Elemente mit den von Ihnen angegebenen logischen Operationen richtig auszuwählen, benötigen Sie nur
jQuery.filter()
dieAND
Operation, nicht "spezielle Filterfunktionen". Sie benötigen auchjQuery.add()
für dieOR
Operation.Alternativ ist es möglich, die Kurzschrift in einem einzelnen Selektor zu verwenden, wobei das Zusammenfügen von Selektoren als
AND
und das Trennen mit einem Komma alsOR
:quelle