Ini tidak bisa dilakukan dengan CSS2.1, tapi mungkin dengan atribut CSS3 pemilih substring-matching (yang sedang didukung di IE7 +):
div[class^="status-"], div[class*=" status-"]
Perhatikan karakter spasi di pemilih atribut kedua. Ini mengambil div
elemen yang class
atributnya memenuhi salah satu dari kondisi ini:
[class^="status-"]
- dimulai dengan "status-"
[class*=" status-"]
- berisi substring "status-" yang terjadi langsung setelah karakter spasi. Nama kelas dipisahkan oleh spasi per spesifikasi HTML , karenanya karakter spasi yang signifikan. Ini memeriksa setiap kelas lain setelah yang pertama jika beberapa kelas ditentukan, dan menambahkan bonus memeriksa kelas pertama jika nilai atributnya adalah ruang-empuk (yang dapat terjadi dengan beberapa aplikasi yang menampilkan class
atribut secara dinamis).
Secara alami, ini juga berfungsi di jQuery, seperti yang ditunjukkan di sini .
Alasan Anda perlu menggabungkan dua penyeleksi atribut seperti dijelaskan di atas adalah karena pemilih atribut seperti [class*="status-"]
akan cocok dengan elemen berikut, yang mungkin tidak diinginkan:
<div id='D' class='foo-class foo-status-bar bar-class'></div>
Jika Anda dapat memastikan bahwa skenario seperti itu tidak akan pernah terjadi, maka Anda bebas menggunakan pemilih semacam itu demi kesederhanaan. Namun, kombinasi di atas jauh lebih kuat.
Jika Anda memiliki kendali atas sumber HTML atau aplikasi yang menghasilkan markup, mungkin lebih mudah untuk membuat status-
awalan kelasnya sendiri sebagaistatus
gantinya seperti yang disarankan Gumbo .
status-
dan Anda tidak ingin mencocokkannya, pemilih menjadi lebih rumit:div[class^="status-"]:not(.status-), div[class*=" status-"]:not(.status-)
Plus Anda kehilangan dukungan IE7 / IE8. Untungnya, jika markup Anda waras, Anda tidak perlu mengecualikan kelas seperti itu.