jQuery การเดินทาง - วิธี end()
ตัวอย่าง
เลือกทุกย่อง หาสมาชิก span ในย่องนั้น และกลับคืนสมาชิกให้เป็นย่อง และตั้งเส้นทางของย่องเป็นเส้นทางที่มีเส้นตรงและสีแดง 2 พิกเซล
$("p").find("span").end().css("border", "2px red solid");
คำนิยามและการใช้งาน
วิธี end() หยุดการกระทำกรองที่ใช้งานอยู่ของทางด้านล่างของเส้นทางที่ใช้งานอยู่ และกลับคืนสมาชิกที่ตรงกันข้ามกันให้กลับมาเป็นสมาชิกที่เดิม
ภาษาบวก
.end()
รายละเอียด
ส่วนที่ส่งผลมากขึ้นและจะสร้างสิ่งที่ตรงกันข้ามต่อตัวแบบจำลอง jQuery และสร้างตัวแบบจำลองแห่งสมาชิก DOM ที่มีความตรงกันตรงข้ามกัน ในกรณีที่เกิดขึ้นเช่นนี้ ควรจะจัดเก็บสมาชิกที่มีความตรงกันตรงข้ามกันในสต๊ากที่อยู่ในวัตถุ ในทุกครั้งที่มีการเรียกใช้เมธอดกรองเพียงครั้งเดียว จะมีการเพิ่มสมาชิกใหม่เข้าสต๊าก ถ้าเราต้องการสมาชิกเดิม สามารถใช้ end() ในการปลดเพิ่มใหม่ในสต๊ากให้กลับมาเป็นสมาชิกที่เดิม
ตั้งแต่ว่ามีรายการรายการที่อ่อนไหวและแบบเดียวกันในหน้านี้
<ul class="first"> <li class="foo">list item 1</li> <li>list item 2</li> <li class="bar">list item 3</li> </ul> <ul class="second"> <li class="foo">list item 1</li> <li>list item 2</li> <li class="bar">list item 3</li> </ul>
ตัวอย่าง 1
หลักๆ คือเมื่อใช้ jQuery chain attribute (command chain) มันจะมีประโยชน์มากขึ้น ถ้าไม่ใช้ command chain ทางปกติเราจะเรียกใช้ตัวแปรที่เคยใช้ไปก่อน ดังนั้นเราจะไม่จำเป็นต้องใช้ stack ตามที่มา แต่ผ่านทาง end() เราสามารถใช้มีธงเรียกใช้ทุกคำสั่งด้วยต่อเนื่องกัน
$('ul.first').find('.foo').css('background-color', 'red') .end().find('.bar').css('background-color', 'green');
คำสั่งนี้ทำการค้นหาอันดับแรกของลิสต์ที่มีคลาสชื่อ foo และกำหนดสีพื้นหลังเป็นสีแดง คำสั่ง end() จะนำตัวแปรกลับไปที่สถานะก่อนที่จะเรียก find() ดังนั้นคำสั่ง find() ตัวที่สองค้นหา '.bar' ภายใน <ul class="first"> ไม่ใช่ใน <li class="foo"> และกำหนดสีพื้นหลังของอันดับที่สองเป็นสีเขียว ผลสุดท้ายคืออันดับที่ 1 และอันดับที่ 3 ของลิสต์แรกที่มีสีพื้นหลังเป็นสีที่มีสี และอันดับในลิสต์ที่สองไม่มีการเปลี่ยนแปลงใดๆ
ตัวอย่าง 2
jQuery chain นี้สามารถแสดงในรูปแบบโค้ดโครงสร้างได้ ใช้วิธี filter โค้ดโครงสร้างที่กลับซ้าย และใช้วิธี end() ที่ใช้ปิดโค้ดโครงสร้าง
$('ul.first').find('.foo') .css('background-color', 'red') .end().find('.bar') .css('background-color', 'green') .end();
ท้ายที่สุดคำสั่ง end() ไม่จำเป็น เพราะเราจะทิ้ง jQuery object นี้ไปต่อไปอีก อย่างไรก็ตาม ถ้าเขียนโค้ดในรูปแบบนี้ คำสั่ง end() จะให้ความสมดุลในทางฟิสิกส์ และการจัดการโค้ดเป็นรูปแบบที่ดีขึ้น อย่างน้อยสำหรับนักพัฒนา แต่ราคาที่จะจ่ายก็คือการทำการเรียกใช้เพิ่มเติม จึงมีการเสียงามของการเรียกใช้เพิ่มเติมนี้