.has()

has ( selector ) Returns: jQueryversion added: 1.4

  • selector
    Type: String
    A string containing a selector expression to match elements against.

has ( contained ) Returns: jQueryversion added: 1.4

  • contained
    Type: Element
    A DOM element to match elements against.

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

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:


 <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:


$( "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.

Examples:

Example: Check if an element is inside another.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>css demo</title>

  <style>

  .full {
    border: 1px solid red;
  }

  </style>

  <script src="//code.jquery.com/jquery-1.10.2.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: