CSS2.1 ile yapılamaz, ancak CSS3 özniteliği alt dize ile eşleşen seçicilerle ( IE7 + ' da desteklenir) mümkündür:
div[class^="status-"], div[class*=" status-"]
İkinci nitelik seçicideki boşluk karakterine dikkat edin. Bu div
, class
niteliği aşağıdaki koşullardan birini karşılayan öğeleri alır :
[class^="status-"]
- "status-" ile başlar
[class*=" status-"]
- bir boşluk karakterinden hemen sonra oluşan "status-" alt dizesini içerir. Sınıf adları, her HTML spesifikasyonu için boşlukla ayrılır , bu nedenle önemli boşluk karakteri olur. Birden sınıflar belirtilmiş, eğer ilk sonra bu çekleri başka sınıflar ve durumda öznitelik değerini birinci sınıf denetleme bonus ekler uzay-yastıklı (çıkış bazı uygulamalarla gerçekleşebilir olduğu class
dinamik nitelikleri).
Doğal olarak, bu da burada gösterildiği gibi jQuery'de çalışır .
İki öznitelik seçiciyi yukarıda açıklandığı gibi birleştirmeniz gerekmesinin nedeni [class*="status-"]
, istenmeyen bir öznitelik seçicinin aşağıdaki öğeyle eşleşeceğidir, bu istenmeyen bir durumdur:
<div id='D' class='foo-class foo-status-bar bar-class'></div>
Böyle bir senaryonun asla gerçekleşmeyeceğinden emin olabilirseniz, basitlik adına böyle bir seçici kullanmakta özgürsünüz. Bununla birlikte, yukarıdaki kombinasyon çok daha sağlamdır.
HTML kaynağı veya işaretleme oluşturan uygulama üzerinde kontrolünüz varsa , Gumbo'nun önerdiği gibistatus-
öneki sadece kendi status
sınıfı yapmak daha basit olabilir .
status-
varsa ve bunu eşleştirmek istemiyorsanız, seçici daha da karmaşık hale gelir:div[class^="status-"]:not(.status-), div[class*=" status-"]:not(.status-)
Ayrıca IE7 / IE8 desteğini kaybedersiniz. Neyse ki, işaretlemeniz aklı başındaysa, böyle bir sınıfı dışlamanız gerekmez.