:has() Selector

jQuery

:has() Selector


has selector

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

  • version added: 1.1.4jQuery( ":has(selector)" )

    selector: Any 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 DOM querySelectorAll() 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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
                                  
<!DOCTYPE html>
<html>
<head>
<style>
.test{ border: 3px inset red; }
</style>
<script src="http://code.jquery.com/jquery-latest.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>