ฉันใช้ jQuery มาระยะหนึ่งแล้ว ฉันต้องการใช้parent()
เครื่องมือเลือก ฉันยังมาพร้อมกับclosest()
ตัวเลือก ไม่พบความแตกต่างระหว่างพวกเขา มีผู้ใด? ถ้าใช่คืออะไร
คือความแตกต่างระหว่างสิ่งที่parent()
, parents()
และclosest()
?
ฉันใช้ jQuery มาระยะหนึ่งแล้ว ฉันต้องการใช้parent()
เครื่องมือเลือก ฉันยังมาพร้อมกับclosest()
ตัวเลือก ไม่พบความแตกต่างระหว่างพวกเขา มีผู้ใด? ถ้าใช่คืออะไร
คือความแตกต่างระหว่างสิ่งที่parent()
, parents()
และclosest()
?
คำตอบ:
closest()
เลือกองค์ประกอบแรกที่ตรงกับตัวเลือกขึ้นจากต้นไม้ DOM เริ่มต้นจากองค์ประกอบปัจจุบันและเดินทางขึ้น
parent()
เลือกองค์ประกอบหนึ่งรายการขึ้นไป (ระดับเดียวขึ้นไป) ต้นไม้ DOM
parents()
วิธีการคล้ายกับparent()
แต่เลือกองค์ประกอบที่ตรงกันทั้งหมดขึ้นต้นไม้ DOM เริ่มต้นจากองค์ประกอบหลักและเดินทางขึ้น
.parents()
(แทน.parent()
) ที่ดึงเอาองค์ประกอบทั้งหมดหรือไม่
จากhttp://api.jquery.com/closest/
วิธีการ. parents ()และ. closest ()มีความคล้ายคลึงกันโดยที่ทั้งคู่สำรวจทรีของ DOM ความแตกต่างระหว่างสองอย่างนี้มีความหมาย:
.closest ()
- เริ่มต้นด้วยองค์ประกอบปัจจุบัน
- เดินทางต้นไม้ DOM จนกว่าจะพบการแข่งขันสำหรับตัวเลือกที่ให้มา
- วัตถุ jQuery ที่ส่งคืนมีศูนย์หรือองค์ประกอบหนึ่งองค์ประกอบ
.parents ()
- เริ่มต้นด้วยองค์ประกอบหลัก
- เดินทางต้นไม้ DOM ไปที่องค์ประกอบรูทของเอกสารโดยเพิ่มองค์ประกอบบรรพบุรุษลงในคอลเล็กชันชั่วคราว จากนั้นจะกรองคอลเล็กชันนั้นตามตัวเลือกหากมีการระบุไว้
- วัตถุ jQuery ที่คืนมามีองค์ประกอบศูนย์หนึ่งหรือหลายองค์ประกอบ
.parent ()
- กำหนดวัตถุ jQuery ที่แสดงถึงชุดขององค์ประกอบ DOM วิธีการ. () ช่วยให้เราสามารถค้นหาผ่านผู้ปกครองขององค์ประกอบเหล่านี้ในต้นไม้ DOM และสร้างวัตถุ jQuery ใหม่จากองค์ประกอบที่ตรงกัน
หมายเหตุ: วิธีการ. parents () และ .parent () มีความคล้ายคลึงกันยกเว้นว่าวิธีหลังจะส่งผ่านระดับ DOM ขึ้นไปในระดับเดียวเท่านั้น นอกจากนี้ $ ("html"). parent () วิธีการส่งกลับชุดที่มีเอกสารในขณะที่ $ ("html"). parent () ส่งกลับชุดที่ว่างเปล่า
นี่คือหัวข้อที่เกี่ยวข้อง:
Note
โปรดตรวจสอบคำตอบอีกครั้งกับ
The .parents() and .parent() methods are similar, except that the latter only travels a single level up the DOM tree. Also, $("html").parent() method returns a set containing document whereas $("html").parents() returns an empty set.
ความแตกต่างระหว่างสองอย่างนี้มีความหมาย:
- เริ่มต้นด้วยองค์ประกอบปัจจุบัน
- เดินทางต้นไม้ DOM จนกว่าจะพบการแข่งขันสำหรับตัวเลือกที่ให้มา
- วัตถุ jQuery ที่ส่งคืนมีศูนย์หรือองค์ประกอบหนึ่งองค์ประกอบ
- เริ่มต้นด้วยองค์ประกอบหลัก
- เดินทางต้นไม้ DOM ไปที่องค์ประกอบรูทของเอกสารโดยเพิ่มองค์ประกอบบรรพบุรุษลงในคอลเล็กชันชั่วคราว จากนั้นจะกรองคอลเล็กชันนั้นตามตัวเลือกหากมีการระบุไว้
- วัตถุ jQuery ที่คืนมามีองค์ประกอบศูนย์หนึ่งหรือหลายองค์ประกอบ
จาก jQuery docs
มีความแตกต่างระหว่างทั้งสอง$(this).closest('div')
และ$(this).parents('div').eq(0)
โดยพื้นฐานclosest
เริ่มต้นองค์ประกอบที่ตรงกันจากองค์ประกอบปัจจุบันในขณะที่parents
เริ่มองค์ประกอบที่ตรงกันจากผู้ปกครอง (หนึ่งระดับเหนือองค์ประกอบปัจจุบัน)
See http://jsfiddle.net/imrankabir/c1jhocre/1/
parent()
เมธอดจะส่งคืนองค์ประกอบหลักโดยตรงขององค์ประกอบที่เลือก วิธีนี้จะข้ามระดับ DOM ขึ้นไปเพียงระดับเดียวเท่านั้น
parents()
วิธีการช่วยให้เราสามารถค้นหาผ่านบรรพบุรุษขององค์ประกอบเหล่านี้ในต้นไม้ DOM เริ่มต้นจากตัวเลือกที่กำหนดและเลื่อนขึ้น
The **.parents()** and **.parent()** methods are almost similar, except that the latter only travels a single level up the DOM tree. Also, **$( "html" ).parent()** method returns a set containing document whereas **$( "html" ).parents()** returns an empty set.
[closest()][3]method returns the first ancestor of the selected element.An ancestor is a parent, grandparent, great-grandparent, and so on.
This method traverse upwards from the current element, all the way up to the document's root element (<html>), to find the first ancestor of DOM elements.
According to docs:
**closest()** method is similar to **parents()**, in that they both traverse up the DOM tree. The differences are as follows:
**closest()**
Begins with the current element
Travels up the DOM tree and returns the first (single) ancestor that matches the passed expression
The returned jQuery object contains zero or one element
**parents()**
Begins with the parent element
Travels up the DOM tree and returns all ancestors that matches the passed expression
The returned jQuery object contains zero or more than one element
$(this).closest('div')
$(this).parents('div').eq(0)
เป็นเช่นเดียวกับ