2011-06-08 13 views
7

CSS'de (herhangi bir sürümde), jQuery'de :has() seçicisi gibi bir şey veya başka bir şey var mı?CSS, jQuery's gibi bir şeye sahiptir: has()?

jQuery(':has(selector)')

Açıklama: belirtilen seçici eşleşen en az bir element ihtiva eden elemanları seçer.

http://api.jquery.com/has-selector/

+0

has() - selektörde ne için sormak istersiniz? – mightyplow

+0

Bu sadece normal bir çocuk seçici değil mi? Bir seçicideki kurallar, eşleşen tüm öğelere uygulanır. – andyb

+1

@andyb: ': has()', ': not()' benzeri bir koşullu sözde sınıftır. Eşleşen öğeler, parantez içinde değil, sözde sınıfın etrafındaki seçicilerdir. – BoltClock

cevap

6

Hayır, yok. CSS'nin tasarlanma şekli, atalarla veya önceki kardeşlerle eşleşen seçmenlere izin vermez; sadece soyundan gelenler ( ve >), takip eden kardeşler (~ ve +) veya belirli çocuklar (:*-child). Tek atalayıcı seçici, bir belgenin kök öğesini seçen :root sözde sınıftır (HTML sayfalarında, doğal olarak html olur).

:has() ile sorguru yaptığınız ögeye stiller uygulamanız gerekiyorsa, bir CSS sınıfı eklemeniz ve daha sonra bu sınıfa göre as suggested by Stargazer712 stilini eklemeniz gerekir.

Css Dosyası:

.myAwesomeClass { 
    ... 
} 

Js Dosya:

+1

Seçiciler 4 taslakları, jQuery'nin ": has()" selektörü için farklı bir semantik olmasına rağmen, bu durumda da aynı şekilde çalışacak bir konu seçiciden bahseder. standartlaştırılır ve uygulanır. – BoltClock

5

sayılı bunu yapmanın en iyi yolu jQuery kullanmaktır selector o başlangıçta vardı her ne ise

jQuery(':has(selector)').addClass("myAwesomeClass") 

eşleşmeye çalışıyor.

+2

* En iyi * yolu, CSS'nizi ve işaretlemeyi, bazen CSS bir acıdan olsa bile, JavaScript'e güvenmek için gereksiz hale getirmek için organize etmektir. –

İlgili konular