ความแตกต่างระหว่างฟังก์ชัน jQuery parent (), parent () และ () ใกล้เคียงที่สุด


184

ฉันใช้ jQuery มาระยะหนึ่งแล้ว ฉันต้องการใช้parent()เครื่องมือเลือก ฉันยังมาพร้อมกับclosest()ตัวเลือก ไม่พบความแตกต่างระหว่างพวกเขา มีผู้ใด? ถ้าใช่คืออะไร

คือความแตกต่างระหว่างสิ่งที่parent(), parents()และclosest()?


6
parent :::: เดินทางกลับไปยังผู้ปกครอง 1 ก้าว .... :::: parent ::: ให้รายชื่อผู้ปกครองทั้งหมด .... :::: ใกล้เคียงที่สุด ::: เดินทางกลับผ่านพี่น้องจนกระทั่งพบสภาพ และส่งคืนเฉพาะครั้งแรก สิ่งเหล่านี้สามารถแก้ไขได้ด้วยตัวเลือกเพิ่มเติม
Muhammad Umer

คำตอบ:


177

closest()เลือกองค์ประกอบแรกที่ตรงกับตัวเลือกขึ้นจากต้นไม้ DOM เริ่มต้นจากองค์ประกอบปัจจุบันและเดินทางขึ้น

parent() เลือกองค์ประกอบหนึ่งรายการขึ้นไป (ระดับเดียวขึ้นไป) ต้นไม้ DOM

parents()วิธีการคล้ายกับparent()แต่เลือกองค์ประกอบที่ตรงกันทั้งหมดขึ้นต้นไม้ DOM เริ่มต้นจากองค์ประกอบหลักและเดินทางขึ้น


10
ไม่ใช่.parents()(แทน.parent()) ที่ดึงเอาองค์ประกอบทั้งหมดหรือไม่
acdcjunior

65
คำตอบนี้หายไปในจุดสำคัญ: "ใกล้ที่สุด" เริ่มต้นด้วยองค์ประกอบปัจจุบันและเดินทางไปที่ "พ่อแม่" เริ่มต้นด้วยองค์ประกอบผู้ปกครองและเดินทางขึ้น
แอนดรู

196

จาก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 () ส่งกลับชุดที่ว่างเปล่า

นี่คือหัวข้อที่เกี่ยวข้อง:


8
เขาถามถึงพ่อแม่ () ไม่ใช่พ่อแม่ ()
ScubaSteve

2
@ScubaSteve: Noteโปรดตรวจสอบคำตอบอีกครั้งกับ
Naveed

1
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.
Naveed

1
@ ScubaSteve ใช่ แต่คำถามผู้ปกครอง () น่าสนใจยิ่งขึ้น
Paul Draper

15

ความแตกต่างระหว่างสองอย่างนี้มีความหมาย:

.closest ()

  • เริ่มต้นด้วยองค์ประกอบปัจจุบัน
  • เดินทางต้นไม้ DOM จนกว่าจะพบการแข่งขันสำหรับตัวเลือกที่ให้มา
  • วัตถุ jQuery ที่ส่งคืนมีศูนย์หรือองค์ประกอบหนึ่งองค์ประกอบ

.parents ()

  • เริ่มต้นด้วยองค์ประกอบหลัก
  • เดินทางต้นไม้ DOM ไปที่องค์ประกอบรูทของเอกสารโดยเพิ่มองค์ประกอบบรรพบุรุษลงในคอลเล็กชันชั่วคราว จากนั้นจะกรองคอลเล็กชันนั้นตามตัวเลือกหากมีการระบุไว้
  • วัตถุ jQuery ที่คืนมามีองค์ประกอบศูนย์หนึ่งหรือหลายองค์ประกอบ

จาก jQuery docs


13
ฉันคิดว่าคุณกำลังอธิบาย. parents () ที่นี่
Muhammad Umer

1

มีความแตกต่างระหว่างทั้งสอง$(this).closest('div')และ$(this).parents('div').eq(0)

โดยพื้นฐานclosestเริ่มต้นองค์ประกอบที่ตรงกันจากองค์ประกอบปัจจุบันในขณะที่parentsเริ่มองค์ประกอบที่ตรงกันจากผู้ปกครอง (หนึ่งระดับเหนือองค์ประกอบปัจจุบัน)

See http://jsfiddle.net/imrankabir/c1jhocre/1/

0

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





 

-1

$(this).closest('div')$(this).parents('div').eq(0)เป็นเช่นเดียวกับ


9
ไม่ค่อนข้างถ้า $ (อันนี้) ก็เป็น div เช่นกัน
Frank Fajardo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.