จะหาผู้ปกครองที่มีคลาสที่รู้จักใน jQuery ได้อย่างไร?


244

ฉันมีสิ่ง<div>นั้นที่มีอยู่มากมาย<div>ภายในแต่ละตัวในระดับการซ้อนที่แตกต่างกัน แทนที่จะให้<div>ตัวระบุเด็กทุกคนฉันแค่ให้รูท<div>ตัวระบุ นี่คือตัวอย่าง:

<div class="a" id="a5">
  <div class="b">
    <div class="c">
      <a class="d">
      </a>
    </div>
  </div>
</div>

ถ้าฉันเขียนฟังก์ชั่นใน jQuery เพื่อตอบสนองต่อชั้นเรียนdและฉันต้องการค้นหา ID สำหรับผู้ปกครองชั้นเรียนaฉันจะทำอย่างไร

ฉันไม่สามารถทำเพียง$('.a').attr('id');เพราะมีหลายระดับas ฉันสามารถค้นหา ID ผู้ปกครองของผู้ปกครอง แต่ดูเหมือนว่าการออกแบบไม่ดีช้าและไม่ polymorphic มาก (ฉันจะต้องเขียนรหัสที่แตกต่างกันสำหรับการค้นหา ID สำหรับชั้นเรียนc)

คำตอบ:


490

สมมติว่าthisเป็น.dคุณสามารถเขียน

$(this).closest('.a');

closestวิธีการส่งกลับผู้ปกครองในสุดขององค์ประกอบของคุณที่ตรงกับตัวเลือก


47
โปรดทราบว่ามีข้อผิดพลาดเล็กน้อย: หากองค์ประกอบเริ่มต้นของคุณตรงกับข้อความค้นหาคุณจะไม่ได้รับองค์ประกอบหลัก แต่เป็นองค์ประกอบเดียวกันแทน นี่อาจเป็นพฤติกรรมที่ต้องการหรือไม่ก็ได้ ถ้าไม่ฉันขอแนะนำอีกครั้ง: $ (นี้) .parent (). ที่ใกล้ที่สุด ('. a');
Risord

1
มีประโยชน์มาก ฉันมักจะใช้ทำ $ (นี้). parent (). parent (). parent () และฉันรู้ว่านั่นเป็นทางออกที่ดีกว่า
Wang'l Pakhrin

28

ผ่านการเลือกไป jQuery พ่อแม่ฟังก์ชั่น:

d.parents('.a').attr('id')

แก้ไขอืมจริงๆแล้วคำตอบของ Slaks นั้นเหนือกว่าถ้าคุณต้องการบรรพบุรุษที่ใกล้เคียงที่สุดที่ตรงกับตัวเลือกของคุณ


8

คุณสามารถใช้Parents ()เพื่อให้ผู้ปกครองทั้งหมดมีตัวเลือกที่กำหนด

คำอธิบาย: รับบรรพบุรุษของแต่ละองค์ประกอบในชุดปัจจุบันขององค์ประกอบที่จับคู่กรองทางเลือกโดยตัวเลือก

แต่parent ()จะได้รับเพียง parent แรกขององค์ประกอบ

คำอธิบาย: รับพาเรนต์ของแต่ละองค์ประกอบในชุดปัจจุบันขององค์ประกอบที่ตรงกันเลือกที่จะถูกกรองโดยตัวเลือก

jQuery parent () กับ parent ()

และมี. parentsUntil ()ซึ่งฉันคิดว่าจะดีที่สุด

คำอธิบาย: รับบรรพบุรุษของแต่ละองค์ประกอบในชุดปัจจุบันขององค์ประกอบที่ตรงกันจนถึง แต่ไม่รวมถึงองค์ประกอบที่จับคู่โดยตัวเลือก


เขาเพียงต้องการเดียวclosestกับผู้ปกครองเพื่อให้เขาควรจะเรียก
Slaks

2

ใช้. parentsUntil ()

$(".d").parentsUntil(".a");

ที่จะกำหนดเป้าหมายทุกองค์ประกอบหลักจนกว่าจะถึงองค์ประกอบหลักที่ตรงกัน
ดัสติน Halstead

0

สกัดจากความคิดเห็นของ @ Resord ด้านบน อันนี้ใช้ได้กับฉันและมีความโน้มเอียงใกล้เคียงกับคำถามมากขึ้น

$(this).parent().closest('.a');

ขอบคุณ

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