Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does CSS have anything like jQuery's :has()?

In CSS (any version), is there something like, or any other way of doing anything like the :has() selector in jQuery?

jQuery(':has(selector)')

Description: Selects elements which contain at least one element that matches the specified selector.

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

like image 254
Qtax Avatar asked Jun 08 '11 12:06

Qtax


2 Answers

No, there isn't. The way CSS is designed, does not permit selectors that match ancestors or preceding siblings; only descendants ( and >), succeeding siblings (~ and +) or specific children (:*-child). The only ancestor selector is the :root pseudo-class which selects the root element of a document (in HTML pages, naturally it would be html).

If you need to apply styles to the element you're querying with :has(), you need to add a CSS class to it then style by that class, as suggested by Stargazer712.

like image 141
BoltClock Avatar answered Oct 07 '22 01:10

BoltClock


No. The best way to accomplish this is by using jQuery:

Css File:

.myAwesomeClass {
    ...
}

Js File:

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

where selector is whatever it is you were originally trying to match.

like image 39
riwalk Avatar answered Oct 07 '22 01:10

riwalk