Saya ingin tahu penyeleksi apa yang tersedia untuk atribut data ini yang datang dengan HTML5.
Mengambil bagian HTML ini sebagai contoh:
<ul data-group="Companies">
<li data-company="Microsoft"></li>
<li data-company="Google"></li>
<li data-company ="Facebook"></li>
</ul>
Apakah ada penyeleksi untuk mendapatkan:
- Semua elemen dengan di
data-company="Microsoft"
bawah ini"Companies"
- Semua elemen dengan di
data-company!="Microsoft"
bawah ini"Companies"
- Dalam kasus lain apakah mungkin menggunakan penyeleksi lain seperti "berisi, kurang dari, lebih besar dari, dll ...".
Jawaban:
Lihat di jQuery Selectors : berisi adalah pemilih
di sini adalah info tentang : berisi pemilih
sumber
$('div[data-col="1"][data-row="2"]')
Apakah ini akan memilih div mana data-col sama dengan 1 dan baris data sama dengan 2, atau akankah itu memilih salah satunya?.attr('data-something', 'value')
untuk melihat pembaruan dalam HTML. Sesuai stackoverflow.com/questions/6827810/…data
panggilan?$('#element').data('something')
jQuery UI
memiliki:data()
pemilih yang juga bisa digunakan. Tampaknya sudah ada sejak Versi 1.7.0 .Anda bisa menggunakannya seperti ini:
Dapatkan semua elemen dengan
data-company
atributDapatkan semua elemen yang
data-company
setaraMicrosoft
Dapatkan semua elemen yang
data-company
tidak setaraMicrosoft
dll ...
Satu peringatan dari
:data()
pemilih baru adalah bahwa Anda harus menetapkandata
nilai dengan kode untuk dipilih. Ini berarti bahwa untuk bekerja di atas, mendefinisikandata
dalam HTML tidak cukup. Anda harus terlebih dahulu melakukan ini:Ini bagus untuk aplikasi satu halaman di mana Anda cenderung menggunakan
$(...).data("datakey", "value")
cara ini atau yang serupa.sumber
:data()
pemilih, atau.data()
metode?jsFiddle Demo
jQuery menyediakan beberapa penyeleksi (daftar lengkap) untuk membuat kueri yang Anda cari berfungsi. Untuk menjawab pertanyaan Anda "Dalam kasus lain apakah mungkin menggunakan penyeleksi lain seperti" berisi, kurang dari, lebih besar dari, dll ... "." Anda juga dapat menggunakan berisi, dimulai dengan, dan diakhiri dengan untuk melihat atribut data html5 ini. Lihat daftar lengkap di atas untuk melihat semua opsi Anda.
The query dasar telah tercakup di atas, dan menggunakan John Hartsock 's jawaban akan menjadi taruhan terbaik baik untuk mendapatkan setiap elemen data-perusahaan, atau untuk mendapatkan setiap satu kecuali Microsoft (atau versi lain dari
:not
).Untuk memperluas ini ke poin lain yang Anda cari, kami dapat menggunakan beberapa pemilih meta. Pertama, jika Anda akan melakukan lebih dari satu query, ada baiknya cache pilihan induk.
Selanjutnya, kita bisa mencari perusahaan di set ini yang mulai dengan G
Atau mungkin perusahaan yang mengandung kata lunak
Dimungkinkan juga untuk mendapatkan elemen yang kecocokan akhir atribut datanya
sumber
Solusi JS murni / vanila (contoh kerja di sini )
Di kueriSelektorSemua Anda harus menggunakan pemilih CSS yang valid (saat ini Level3 )
SPEED TEST (2018.06.29) untuk jQuery dan Pure JS: test dilakukan pada MacOs High Sierra 10.13.3 di Chrome 67.0.3396.99 (64-bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64 -sedikit). Tangkapan layar di bawah ini menunjukkan hasil untuk peramban tercepat (Safari):
PureJS lebih cepat dari jQuery sekitar 12% di Chrome, 21% di Firefox dan 25% di Safari. Menariknya kecepatan untuk Chrome adalah operasi 18,9M per detik, Firefox 26M, Safari 160.9M (!).
Jadi pemenangnya adalah PureJS dan browser tercepat adalah Safari (lebih dari 8x lebih cepat dari Chrome!)
Di sini Anda dapat melakukan pengujian pada mesin Anda: https://jsperf.com/js-selectors-x
sumber