Tentukan beberapa penyeleksi atribut dalam CSS


296

Apa sintaks untuk melakukan sesuatu seperti:

input[name="Sex" AND value="M"]

Pada dasarnya, saya ingin memilih inputelemen yang memiliki atribut name="Sex"serta atribut value="M":

<input type="radio" name="Sex" value="M" />

Elemen-elemen seperti berikut ini tidak boleh dipilih:

<input type="radio" name="Sex" value="F" />

Jawaban:


437

Sederhana input[name=Sex][value=M]akan sangat bagus. Dan sebenarnya dijelaskan dengan baik dalam dokumen standar :

Selektor atribut ganda dapat digunakan untuk merujuk ke beberapa atribut elemen, atau bahkan beberapa kali atribut yang sama.

Di sini, pemilih cocok dengan semua elemen SPAN yang atribut "halo" -nya memiliki nilai persis "Cleveland" dan yang atribut "selamat tinggal" persisnya memiliki nilai "Columbus":

span[hello="Cleveland"][goodbye="Columbus"] { color: blue; }

Sebagai catatan tambahan, menggunakan tanda kutip di sekitar nilai atribut diperlukan hanya jika nilai ini bukan pengidentifikasi yang valid.

Demo JSFiddle


8
apakah ada sesuatu seperti ini, tetapi ATAU bukannya DAN?
törzsmókus

4
Maksud Anda selain ,(koma)?
raina77ow

2
Anda tidak dapat menulis rentang [halo = "Cleveland"], [selamat tinggal = "Columbus"] tetapi Anda harus mengulangi bagian (mungkin panjang).
törzsmókus

Anda memang harus (setidaknya untuk saat ini), kecuali jika Anda menggunakan preprosesor. Konsultasikan utas ini untuk lebih jelasnya.
raina77ow

67

Untuk menggabungkannya:

input[name="Sex"][value="M"] {}

Dan untuk mengambil persatuan itu:

input[name="Sex"], input[value="M"] {}

31

Gabungkan selektor atribut:

input[name="Sex"][value="M"]

1
Perlu dicatat bahwa setidaknya satu dari nilai atribut harus dikutip. Ini akan gagal jika Anda menulisnya input[name=Sex][value=M]meskipun akan sah untuk memiliki pemilih dengan hanya satu atribut yang tidak menggunakan tanda kutip.
stevec

1
@stevec Apakah Anda bermaksud mengatakan ini pada jawaban yang diterima? Saya telah mengutip nilai-nilai dalam jawaban saya. Saya juga tidak berpikir itu benar. Anda perlu mengutip jika jawabannya berisi karakter tertentu tetapi tidak dalam contoh ini. mothereff.in/unquoted-attributes
Dennis

Saya menambahkan catatan itu karena saya mencobanya di beberapa browser tanpa tanda kutip dan semuanya gagal. Saya percaya bahwa masalahnya adalah bahwa tanpa tanda kutip pada setidaknya satu, itu ambigu karena dapat ditafsirkan sebagai input yang namanyaSex][value=M
stevec

kurung @stevec tidak valid dalam atribut yang tidak dikutip untuk alasan yang tepat. Contoh ini berfungsi di Firefox dan Chrome: jsfiddle.net/o2abekdh/3
Dennis

4

Hanya untuk menambahkan bahwa seharusnya tidak ada ruang antara pemilih dan braket pembuka.

td[someclass] 

akan bekerja. Tapi

td [someclass] 

tidak akan.


-6
[class*="test"],[class="second"] {
background: #ffff00;
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.