2011-06-08 9 views
7

W CSS (dowolnej wersji), czy istnieje coś takiego, lub jakikolwiek inny sposób robienia czegoś takiego jak selektor :has() w jQuery?Czy CSS ma coś takiego jak jQuery: has()?

jQuery(':has(selector)')

Opis wybiera elementy które zawierają co najmniej jeden element, który odpowiada podanemu selektora.

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

+0

o co chcesz zapytać w has() - selektorze? – mightyplow

+0

Czy to nie jest zwykły selektor dzieci? Reguły w selektorze zostaną zastosowane do wszystkich pasujących elementów. – andyb

+1

@andyb: ': has()' jest warunkową pseudoklasą, podobną do ': not()'. Dopasowane elementy to selektory wokół pseudoklasy, a nie w nawiasach. – BoltClock

Odpowiedz

6

Nie, nie ma. Sposób, w jaki zaprojektowano CSS, nie pozwala na wybór selektorów pasujących do przodków lub wcześniejszych rodzeństwa; tylko potomkowie ( i), następne rodzeństwo (~ i +) lub określone dzieci (:*-child). Jedynym selektorem przodków jest pseudo-klasa :root, która wybiera główny element dokumentu (na stronach HTML naturalnie byłby to html).

Jeśli chcesz zastosować style do elementu, którego dotyczy zapytanie z :has(), musisz dodać do niego klasę CSS, a następnie styl tej klasy, as suggested by Stargazer712.

+1

Wersje 4 programu Selectors wspominają selektor tematów, który, chociaż ma inny semanentny dla selektora ': has() jQuery, działałby równie dobrze w tym przypadku, gdyby zostaje ustandaryzowany i wdrożony. – BoltClock

5

nr Najlepszym sposobem osiągnięcia tego celu jest za pomocą jQuery:

Css pliku:

.myAwesomeClass { 
    ... 
} 

Js pliku:

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

gdzie selector jest cokolwiek to było pierwotnie próbując się dopasować.

+2

Najlepszym * sposobem na uporządkowanie kodu CSS i znaczników, aby nie było potrzeby polegać na JavaScript, nawet jeśli CSS czasami jest trochę uciążliwy. –

Powiązane problemy