วิธีการเลือก DIV หลักโดยใช้ jQuery


98
var classes = $(this).attr('class').split(' '); // this gets the current element classes

var classes = $(this).parent().attr('class').split(' '); // this gets the parent classes.

ผู้ปกครองในสถานการณ์ข้างต้นคืออังกอร์

ถ้าฉันต้องการรับ DIV หลักแรกของ $ (นี่) รหัสจะเป็นอย่างไร

var classes = $(this).div:parent().attr('class').split(' '); // just a quick try.

*โดยทั่วไปฉันต้องการได้รับคลาสของ DIV หลักแรกของ $ (this)

ขอบคุณ

คำตอบ:


162

ใช้.closest()เพื่อสำรวจโครงสร้าง DOM ไปยังตัวเลือกที่ระบุ

var classes = $(this).parent().closest('div').attr('class').split(' '); // this gets the parent classes.

10
parents("div")กำลังสำรวจและส่งคืน div หลักทั้งหมดที่คุณควรใช้.eq(0)หลังจากนั้นเพื่อให้แน่ใจว่าจะส่งคืนค่าที่คุณต้องการเท่านั้น
meo

3
โปรดจำไว้ว่ามันจะดีกว่าสำหรับประสิทธิภาพในการใช้.parents('div').eq(0)- การใช้ตัวเลือก CSS ของกระเป๋าเงินที่ทำตามโดย jQuery เพื่อกรองเฉพาะองค์ประกอบแรกจะทำให้คุณได้รับประสิทธิภาพเพิ่มขึ้นเล็กน้อย - ดูส่วน 'หมายเหตุเพิ่มเติม' ในjQuery: eq doc
Noah Whitmore

@NoahWhitmore แก้ไขมัน. ใช้closest()ดังนั้นมันจะไม่ส่งคืนพ่อแม่ทั้งหมดยกเว้นdivผู้ปกครอง
Shef

41

ใช้.closest()ซึ่งได้รับองค์ประกอบบรรพบุรุษแรกที่ตรงกับตัวเลือกที่กำหนด'div':

var classes = $(this).closest('div').attr('class').split(' ');

แก้ไข:

ตามที่ @Shef ระบุไว้.closest()จะส่งคืนองค์ประกอบปัจจุบันหากเป็น DIV ด้วย ในการพิจารณาให้ใช้.parent()ก่อน:

var classes = $(this).parent().closest('div').attr('class').split(' ');

5
.closest()จะจับคู่ตัวเองถ้า$(this)เป็นองค์ประกอบ DIV
Shef

@ เชฟนั่นเป็นข้อมูลใหม่สำหรับฉันขอบคุณ ฉันได้แก้ไขคำตอบเพื่อสะท้อนสิ่งนี้แล้ว
Tatu Ulmanen

3
คุณสามารถใช้.parents("div").eq(0)
meo

8

สิ่งนี้จะได้รับพาเรนต์ถ้าเป็น div จากนั้นจะได้รับคลาส

var div = $(this).parent("div");
var _class = div.attr("class");

1
@meo นั่นคือสิ่งที่คำถามถาม
Daniel West


0

สองตัวเลือกที่ดีที่สุดคือ

$(this).parent("div:first")

$(this).parent().closest('div')

และแน่นอนคุณสามารถค้นหาผู้เข้าร่วมชั้นเรียนได้โดย

$(this).parent("div:first").attr("class")

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