jQuery: Traversing

HTML

<div class="grandparent">
    <div class="parent">
        <div class="child">
            <span class="subchild">content: subchild</span>
        </div>
    </div>
    <div class="surrogateParent1">content: surrogateParent1</div>
    <div class="surrogateParent2">content: surrogateParent2</div>
    <ul>
    <li>
       <li>1
         <span>2
           <span class="required">
             3
           </span>
         </span>
       </li>
       </li>
    </ul>
</div>

JavaScript

// Selecting an element's direct parent:
console.log($("span.required").parents("li"))
 
// returns [ div.child ]
console.log ( $( "span.subchild" ).parent() )
 
// Selecting all the parents of an element that match a given selector:
 
// returns [ div.parent ]
console.log ( $( "span.subchild" ).parents( "div.parent" ) )
 
// returns [ div.child, div.parent, div.grandparent ]
console.log ( $( "span.subchild" ).parents() )
 
// Selecting all the parents of an element up to, but *not including* the selector:
 
// returns [ div.child, div.parent ]
console.log ( $( "span.subchild" ).parentsUntil( "div.grandparent" ) )
 
// Selecting the closest parent, note that only one parent will be selected
// and that the initial element itself is included in the search:
 
// returns [ div.child ]
console.log ( $( "span.subchild" ).closest( "div" ) )
 
// returns [ div.child ] as the selector is also included in the search:
console.log ( $( "div.child" ).closest( "div" ) )