ใช้ jQuery เพื่อดูว่า div มีลูกที่มีคลาสที่แน่นอนหรือไม่


115

ฉันมี div ที่เต็มไปแบบไดนามิกที่มีหลายย่อหน้ากับการเรียน#popup .filled-textฉันกำลังพยายามให้ jQuery บอกว่า#popupมีหนึ่งในย่อหน้าเหล่านี้อยู่หรือไม่

ฉันมีรหัสนี้:

$("#text-field").keydown(function(event) {
    if($('#popup').has('p.filled-text')) {
        console.log("Found");
     }
});

ข้อเสนอแนะใด ๆ ?


1
คุณกำลังมองหาบุตรหลานหรือผู้สืบสกุลเท่านั้น (ลูกหลานเหลน ฯลฯ ) ปัจจุบันชื่อคำถามเขียนว่า "เด็ก" แต่คำตอบดูเหมือนจะพูดถึงลูกหลานตามอำเภอใจ
hippietrail

ตอนนั้นฉันเชื่อว่าฉันกำลังมองหาเด็กโดยเฉพาะ แต่มันยากที่จะจำได้อย่างแน่นอนเนื่องจากคำถามนี้มีอายุเกือบ 4 ขวบ ไม่ว่าจะด้วยวิธีใดคำถามและคำตอบครอบคลุมทั้งเด็กและผู้สืบเชื้อสายและยังมีคำตอบที่ครอบคลุมทั้งเด็กโดยเฉพาะและไม่ใช่ลูกหลานดังนั้นฉันไม่แน่ใจว่าคุณกำลังพยายามทำอะไรอยู่
Samsquanch

เมื่อใช้เครื่องมือค้นหาเพื่อค้นหาคำถามโดยเฉพาะเกี่ยวกับการค้นหาองค์ประกอบที่มีเด็กตรงกับตัวเลือกนี่คือสิ่งที่พบดังนั้นฉันจะปรับเปลี่ยนชื่อคำถามหากไม่ถูกต้องเพื่อช่วยให้ผู้อื่นพบ คำถามที่ถูกต้องในอนาคต
hippietrail

คำตอบ:


198

คุณสามารถใช้ฟังก์ชันค้นหา :

if($('#popup').find('p.filled-text').length !== 0)
   // Do Stuff

7
สิ่งนี้ใช้งานได้จริงตามที่ฉันต้องการ แต่สำหรับการอ้างอิงif($('#popup').has('p.filled-text').length != 0) {ก็ใช้ได้เช่นกัน
Samsquanch

9
ไม่จำเป็นต้องตรวจสอบ 0. 0 เป็นเท็จใน js developer.mozilla.org/en-US/docs/Glossary/Falsy
РАВИ


7

ใช้funcion สำหรับเด็กของ jQuery

$("#text-field").keydown(function(event) {
    if($('#popup').children('p.filled-text').length > 0) {
        console.log("Found");
     }
});

$.children('').length จะส่งคืนจำนวนองค์ประกอบย่อยที่ตรงกับตัวเลือก


1
.size()ส่งคืนเหมือนกับ.lengthคุณสมบัติ แต่ช้ากว่าดังนั้นคุณควรแทนที่
Johannes Klauß

ขอบคุณ Johnnes ที่ชี้ให้ฉันเห็น! ฉันไม่รู้จักมัน อัปเดต Answare แล้ว!
Christopher Ramírez

ยินดีต้อนรับ แต่ยังมีข้อผิดพลาด มัน.lengthไม่ได้.length()
โยฮันเนKlauß

: PI คิดว่ามันเป็นฟังก์ชันที่เหมือนกับอินเทอร์เฟซ jQuery ส่วนใหญ่ ประเภทของความไม่ลงรอยกันฉันคิดว่า แต่อย่างไรก็ตาม answare ได้รับการอัปเดตอีกครั้ง: P ขอบคุณ Johannes
Christopher Ramírez

.lengthคุณสมบัติไม่ได้เป็นส่วนหนึ่งของห้องสมุด jQuery ก็เพียงจาวาสคริปต์พื้นเมือง แต่ใช่บางครั้งอาจทำให้สับสนได้
Johannes Klauß

4

วิธีง่ายๆ

if ($('#text-field > p.filled-text').length != 0)

2
วิธีการ. size () เทียบเท่ากับคุณสมบัติ. length; อย่างไรก็ตามคุณสมบัติ. length เป็นที่ต้องการเนื่องจากไม่มีค่าใช้จ่ายในการเรียกฟังก์ชัน
Hitesh Modha

1

หากเป็นลูกโดยตรงคุณสามารถทำได้ดังต่อไปนี้หากสามารถซ้อนกันได้ลึกกว่านี้ให้ลบ>

$("#text-field").keydown(function(event) {
    if($('#popup>p.filled-text').length !== 0) {
        console.log("Found");
     }
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.