← Back to jQuery Course | Chapter 7: DOM Traversing | Lesson 10 of 10

end() और addBack() से Chains को Revert करना

end() jQuery chain में पिछली selection पर वापस लौटता है।
Syntax
javascript
$(selector).find(child).action().end().action();
$(selector).find(child).addBack().action();

end() इस्तेमाल करना

.end() call करना chain में सबसे हाल का filtering या traversal step undo कर देता है, उससे ठीक पहले jQuery के पास मौजूद selection को restore करते हुए। यह आपको एक single chain में एक branch पर काम करने और फिर बिना अलग variable बनाए दूसरे पर वापस जाने देता है।

उदाहरण: Using end()

javascript
<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  </head>
  <body>
    <ul id="list"><li class="a">One</li><li>Two</li></ul>
    <script>
      const result = $("#list").find(".a").css("color", "red").end().find("li").length;
      console.log(result);
    </script>
  </body>
</html>

end() के साथ Chaining

end() तब उपयोगी है जब एक लंबी chain को related elements के कई levels पर काम करना हो -- एक child ढूंढो, उस पर action लो, end() से parent पर वापस जाओ, फिर एक अलग child ढूंढो। यह पूरी chain को readable और एक single statement में रखता है।

उदाहरण: Chaining with end()

javascript
<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  </head>
  <body>
    <div id="box"><p class="a">A</p><span class="b">B</span></div>
    <script>
      $("#box").find(".a").css("color", "red").end().find(".b").css("color", "blue");
    </script>
  </body>
</html>

addBack() इस्तेमाल करना

addBack() पिछली selection को पूरी तरह discard करने के बजाय current set में वापस add कर देता है, दोनों selections को एक साथ combine करते हुए। यह end() से अलग है, जो current set को पिछले से पूरी तरह replace कर देता है।

उदाहरण: Using addBack()

javascript
<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  </head>
  <body>
    <ul id="list"><li>One</li><li class="a">Two</li></ul>
    <script>
      const set = $("#list").find("li").filter(".a").addBack();
      console.log(set.length);
    </script>
  </body>
</html>

end() बनाम addBack()

end() पिछली selection पर वापस move करता है, chain में last traversal या filter step ने जो भी add किया था उसे drop करते हुए। addBack() इसके बजाय पिछली selection को current selection के साथ merge कर देता है, दोनों sets को एक साथ रखते हुए।

उदाहरण: end() vs addBack()

javascript
<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  </head>
  <body>
    <ul id="list"><li>One</li><li class="a">Two</li></ul>
    <script>
      console.log("end():", $("#list").find("li").filter(".a").end().length);
      console.log("addBack():", $("#list").find("li").filter(".a").addBack().length);
    </script>
  </body>
</html>

Traversal Chain Practice

ये methods सिर्फ किसी earlier selection को याद रखने के लिए repeated variable assignments से बचकर complex traversal chains को readable रखने में मदद करते हैं। एक लंबी chain end() और addBack() के साथ अक्सर separate variables में तोड़े गए बराबर code से ज़्यादा clear रहती है।

उदाहरण: Traversal Chain Practice

javascript
<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  </head>
  <body>
    <div id="box"><p class="a">A</p></div>
    <script>
      $("#box").find(".a").css("color", "red").end().css("border", "1px solid black");
    </script>
  </body>
</html>
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह उम्मीद करना कि .end() हर पहले वाले step को undo कर देगा, जबकि यह chain में सिर्फ single सबसे हाल के filter या traversal को revert करता है।
  2. .addClass() जैसे किसी method के बाद .end() इस्तेमाल करना जो selection नहीं बदलता, और intended से एक step ज़्यादा पीछे पहुँच जाना।
  3. .addBack() को .end() के साथ confuse करना; .addBack() पिछले set को current में merge करता है, जबकि .end() current set को पिछले से replace कर देता है।
चैप्टर सारांश
  • DOM traversing एक element से related elements की ओर move करता है: ancestors, descendants, और siblings।
  • Filtering, is(), और has() elements के sets को narrow और test करते हैं।
  • each(), mapping, और addBack() के साथ end() matches पर iterate करते हैं और jQuery chains control करते हैं।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.