1. Concept of Traversal in jQuery
In jQuery, you often start with a set of elements and then traverse to find other elements. For example:
$('div') // selects all divs
.find('p'); // finds all <p> inside those divs
At this point, your current set of elements is now the <p> elements inside the <div>. The original <div> selection is lost if you continue chaining.
2. Reversing Traversal with .end()
The .end() method goes back to the previous selection set—essentially undoing the last traversal.
Syntax:
.previousTraversal.end()
3. Example
$('div') // Step 1: select all divs
.find('p') // Step 2: select all <p> inside those divs
.css('color', 'red') // Step 3: style <p> elements
.end() // Step 4: go back to original <div> selection
.css('border', '1px solid blue'); // Step 5: style <div> elements
Explanation:
-
$('div') → selects all <div> elements.
-
.find('p') → changes the current selection to <p> elements inside those <div>.
-
.css('color', 'red') → applies CSS to <p> elements.
-
.end() → goes back to the <div> elements (undoes .find('p')).
-
.css('border', '1px solid blue') → applies CSS to <div> elements.
So .end() allows you to reverse a traversal and continue chaining on the previous set of elements.
4. Key Points
-
.end() reverts to the previous set of elements in the chain.
-
You can chain multiple .end() calls to go back several steps.
-
Very useful when you want to operate on both the traversed elements and the original elements without creating new variables.