:has() Selector
has selector
version added: 1.1.4jQuery(':has(selector)')
-
- selector
- Any selector.
Description: Selects elements which contain at least one element that matches the specified selector.
The expression $('div:has(p)')
matches a <div>
if a <p>
exists anywhere among its descendants, not just as a direct child.
Additional Notes:
- Because
:has()
is a jQuery extension and not part of the CSS specification, queries using:has()
cannot take advantage of the performance boost provided by the native DOMquerySelectorAll()
method. For better performance in modern browsers, use$("your-pure-css-selector").has(selector/DOMElement)
instead.
Example:
Adds the class "test" to all divs that have a paragraph inside of them.
<!DOCTYPE html>
<html>
<head>
<style>
.test{ border: 3px inset red; }
</style>
<script src="http://code.jquery.com/jquery-1.7rc2.js"></script>
</head>
<body>
<div><p>Hello in a paragraph</p></div>
<div>Hello again! (with no paragraph)</div>
<script>$("div:has(p)").addClass("test");</script>
</body>
</html>