Saya sedang memikirkan, apakah mungkin di jQuery untuk memilih elemen dengan atribut bernama menggunakan AND dan OR.
Contoh:
<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>
Saya ingin memilih semua elemen di mana myc="blue"
tetapi hanya yang memiliki myid
set ke 1 atau 3.
Jadi saya mencoba:
a=$('[myc="blue"] [myid="1"] [myid="3"]');
tapi tidak berhasil, sama di sini:
a=$('[myc="blue"] && [myid="1"] || [myid="3"]');
Apakah mungkin tanpa menulis fungsi filter khusus?
myc
danmyid
. Jika Anda menggunakan awalan HTML5 dengandata-
:data-myc
dandata-myid
.Jawaban:
DAN operasi
ATAU operasi, gunakan koma
Seperti komentar @Vega:
sumber
myc == blue && (id == 1 || id == 3)
a=$('[myc="blue"] [myid="1"],[myid="3"]');
artinya([myc="blue"] AND [myid="1"]) OR [myid="3"]
atau([myc="blue"]) AND ([myid="1"] OR [myid="3"])
saya mencari yang kedua // Edit: terima kasih untuk pembaruan itu! :-)Penggunaan sederhana
.filter()
[dokumen] (DAN) menggunakan beberapa pemilih [dokumen] (ATAU):Secara umum, selektor rangkaian, seperti
a.foo.bar[attr=value]
adalah semacam pemilih DAN.jQuery memiliki dokumentasi ekstensif tentang penyeleksi yang didukung, itu layak untuk dibaca.
sumber
Bagaimana kalau menulis filter seperti di bawah ini,
Edit: @Jack Terima kasih .. benar-benar melewatkannya ..
DEMO
sumber
Operator and dalam selektor hanyalah string kosong, dan operator or berupa koma.
Namun tidak ada pengelompokan atau prioritas, jadi Anda harus mengulangi salah satu ketentuan:
sumber
blue
, tetapi saya tidak yakin tentang nilai numerik, jadi saya menyimpannya.Pertama temukan kondisi yang terjadi di semua situasi, lalu filter kondisi khusus:
sumber
Dalam kasus khusus Anda, itu akan terjadi
sumber
JQuery menggunakan pemilih CSS untuk memilih elemen, jadi Anda hanya perlu menggunakan lebih dari satu aturan dengan memisahkannya dengan koma, sebagai berikut:
Edit:
Maaf, Anda mau biru dan 1 atau 3. Bagaimana kalau:
Menyatukan dua selektor atribut memberi Anda DAN, menggunakan koma memberi Anda ATAU.
sumber
myc == blue && (id == 1 || id == 3)
[myc="blue"]
selektor pada contoh kedua.Untuk benar memilih elemen menggunakan operasi logis bahwa Anda telah menyatakan, Anda hanya perlu
jQuery.filter()
untukAND
operasi, bukan "fungsi filter khusus". Anda juga perlujQuery.add()
untukOR
operasi tersebut.Atau, dimungkinkan untuk menggunakan singkatan dalam satu selektor, di mana selektor jamming bersama-sama bertindak sebagai
AND
dan memisahkan dengan koma bertindak sebagaiOR
:sumber