OpenJS Foundation - openjsf.org · api.jquery.com

.has( selector )Returns: jQuery

Description: Reduce the set of matched elements to those that have a descendant that matches the selector or DOM element.

  • version added: 1.4.has( selector )

    • selector

      A string containing a selector expression to match elements against.

  • version added: 1.4.has( contained )

    • contained

      A DOM element to match elements against.

Given a jQuery object that represents a set of DOM elements, the .has() method constructs a new jQuery object from a subset of the matching elements. The supplied selector is tested against the descendants of the matching elements; the element will be included in the result if any of its descendant elements matches the selector.

Consider a page with a nested list as follows:

1

2

3

4

5

6

7

8

9

10

11

<ul>

<li>list item 1</li>

<li>list item 2

<ul>

<li>list item 2-a</li>

<li>list item 2-b</li>

</ul>

</li>

<li>list item 3</li>

<li>list item 4</li>

</ul>

We can apply this method to the set of list items as follows:

1

$( "li" ).has( "ul" ).css( "background-color", "red" );

The result of this call is a red background for item 2, as it is the only <li> that has a <ul> among its descendants.

Example:

Check if an element is inside another.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<!doctype html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>has demo</title>

<style>

.full {

border: 1px solid red;

}

</style>

<script src="https://code.jquery.com/jquery-4.0.0.js"></script>

</head>

<body>

<ul><li>Does the UL contain an LI?</li></ul>

<script>

$( "ul" ).append( "<li>" +

( $( "ul" ).has( "li" ).length ? "Yes" : "No" ) +

"</li>" );

$( "ul" ).has( "li" ).addClass( "full" );

</script>

</body>

</html>

Demo:

Read the original on api.jquery.com ↗