jQuery: pilih kelas elemen dan id secara bersamaan?

170

Saya punya beberapa tautan yang ingin saya pilih kelas dan id secara bersamaan.

Ini karena saya punya 2 perilaku berbeda. Ketika suatu kelas tautan mendapatkan satu nama kelas, mereka berperilaku dalam satu cara, ketika kelompok tautan yang sama mendapatkan nama kelas lain, mereka berperilaku berbeda. Nama kelas diganti dengan jquery.

Jadi saya harus dapat memilih kelas tautan DAN id secara bersamaan. Apakah ini mungkin?

Saya sudah mencoba:

 $("a .save #country")

tanpa hasil apa pun.

ajsie
sumber

Jawaban:

305

Anda dapat melakukan:

$("#country.save")...

ATAU

$("a#country.save")...

ATAU

$("a.save#country")...

seperti yang kamu inginkan.

Jadi ya Anda dapat menentukan pemilih yang harus cocok dengan ID dan kelas (dan berpotensi menandai nama dan hal lain yang ingin Anda masukkan).

cletus
sumber
41
Jadi pada dasarnya seperti: $ ("# a .b") berarti elemen dengan kelas b di dalam elemen dengan id a. $ ("# ab") berarti elemen dengan kelas b dan id a. Caranya adalah ruang antara #a dan .b
Bhumi Singhal
13
Harus berhati-hati bahwa Anda menggunakan pemilih id sebelum kelas jika tidak maka tidak akan berhasil. Contoh: $ (". Save # country") ... tidak memberikan hasil.
slotomo
43

Hanya untuk menambahkan bahwa jawaban yang diberikan Alex bekerja untuk saya, dan bukan jawaban yang disorot sebagai jawaban.

Yang ini tidak berhasil untuk saya

$('#country.save') 

Tapi yang ini:

$('#country .save') 

jadi kesimpulan saya adalah menggunakan ruang. Sekarang saya tidak tahu apakah ini ke versi baru jQuery yang saya gunakan (1.5.1), tetapi tetap berharap ini membantu siapa pun dengan masalah yang sama yang saya alami.

sunting: Penghargaan penuh untuk penjelasan (dalam komentar atas jawaban Alex) diberikan kepada Felix Kling yang mengatakan:

Ruang adalah pemilih keturunan, yaitu AB berarti "Cocokkan semua elemen yang cocok dengan B yang merupakan keturunan dari elemen yang cocok dengan A". AB berarti "pilih semua elemen yang cocok dengan A dan B". Jadi itu sangat tergantung pada apa yang ingin Anda raih. #country.savedan #country .savetidak setara.

Nikola
sumber
2
Apakah masalah yang Anda katakan "countery" bukan "country"?
amindfv
8

Ini akan berfungsi saat menambahkan ruang antara id dan pengidentifikasi kelas

$("#countery .save")...

Alex
sumber
1
sebenarnya ini bekerja untuk saya, karena tidak berfungsi seperti $ ('# countery.save') jadi terima kasih!
Nikola
1
Saya menemukan kadang-kadang pilih-pilih tentang ruang. seperti $ (. selector> .item # id) berfungsi, tetapi $ (. selector> .item #id) tidak.
Abe Petrillo
21
Ruang adalah pemilih keturunan , yaitu A Bberarti "Cocokkan semua elemen yang cocok dengan B yang merupakan keturunan dari elemen yang cocok dengan A". ABberarti "pilih semua elemen yang cocok dengan A dan B". Jadi itu sangat tergantung pada apa yang ingin Anda raih. #countery.savedan #countery .savetidak setara.
Felix Kling
2

Pada akhirnya aturan yang sama seperti untuk css berlaku.

Jadi saya pikir referensi ini bisa bermanfaat.

getack
sumber
Bisakah Anda meringkas isi referensi Anda?
krlmlr
Sebenarnya, menurut api.jquery.com/category/selectors jQuery memiliki beberapa penyeleksi sendiri; juga, itu tidak benar-benar mengatakan bahwa semua penyeleksi CSS 1-3 didukung ...
SamB
@ Sam Anda benar tetapi, ia mengatakan itu meminjam dari CSS 1-3 DAN menambahkan sendiri. Saya masih berpikir tautan ke hal-hal W3C valid untuk diskusi ini.
akousmata
2

Bagaimana dengan kode ini?

$("a.save#country")
Pekka
sumber
1
$("a.save, #country") 

akan memilih id "a.save" dan id "country".

baik w
sumber