การพิจารณาว่า jQuery ไม่พบองค์ประกอบใด ๆ


127

ฉันใช้ตัวเลือกของ jQuery โดยเฉพาะ id selector:

$("#elementId")...

ฉันจะตรวจสอบได้อย่างไรว่า jQuery พบองค์ประกอบหรือไม่ แม้ว่าองค์ประกอบที่มีรหัสที่ระบุจะไม่มีคำสั่งถัดไปให้ฉัน:[object Object]

alert($("#idThatDoesnotexist"));

คำตอบ:


188

$('#idThatDoesnotexist').lengthคือสิ่งที่คุณกำลังมองหา (หากไม่พบสิ่งนี้จะเป็น=== 0เช่นนั้น) ดังนั้นคำสั่งเงื่อนไขของคุณควรเป็น:

if ($ ('# id'). length) {/ * code if found * /} else {/ * code if not found * /}

คุณได้รับออบเจ็กต์ที่ส่งคืนจากการแจ้งเตือนนั้นเนื่องจาก jQuery (เกือบ) ส่งคืน "วัตถุ jQuery" เสมอเมื่อคุณใช้งานซึ่งเป็นกระดาษห่อหุ้มสำหรับองค์ประกอบที่ jQuery พบว่าอนุญาตให้มีการผูกมัดวิธีการ


3
คุณไม่ต้องการศูนย์ $ ('# id') ความยาวก็เพียงพอแล้ว (ศูนย์ == เท็จใน javascript)
David Hellsing

13
@ ดาวิดความจริงที่ว่าคุณไม่ต้องการมันไม่จำเป็นต้องทำให้ซ้ำซ้อนเมื่อมองแวบแรก IMO จะทำให้ชัดเจนยิ่งขึ้น
Abir

1
@Abir: มันจะทำให้ชัดเจนมากขึ้นจนกว่าคุณจะคุ้นเคยกับไวยากรณ์โดยไม่ใช้มันทดสอบความจริงแทนที่จะเป็น 0 อย่างชัดเจนฉันขอแนะนำให้ทำความคุ้นเคยกับไวยากรณ์โดยไม่ต้องใช้== 0คุณจะเห็นได้ทุกที่
Scott Stafford

@ScottStafford สำหรับการกวาดล้างเพิ่มเติมคุณยังสามารถใช้if (!!$('#id').length)ที่ทำบูลีนได้
Daniele Vrut

6
คุณควรพิจารณาด้วยว่าประโยชน์ของการบันทึกอักขระสองตัวช่วยชดเชยความสับสนที่อาจเกิดขึ้นได้หรือไม่เมื่อมีคนที่ไม่คุ้นเคยกับความแตกต่างของ Javascript อ่านโค้ด ไม่ใช่แนวทางปฏิบัติที่ดีที่สุดเท่าที่ความสามารถในการบำรุงรักษาเป็นกังวลในความคิดของฉัน
Matt Carr

26

Futuraprime ถูกต้อง แต่คุณสามารถย่อไวยากรณ์ของคุณได้โดยทำดังต่อไปนี้:

if ($("#id").length) {
   //at least one element was found
} else {
   //no elements found
}

11
!$.isEmptyObject($.find('#id'))

สิ่งนี้จะคืนค่าเป็นจริงหากองค์ประกอบนั้นมีอยู่และเป็นเท็จหากไม่มี


7
$('#my_selector').length > 0 
$('#my_selector').get(0) !== undefined
$('#my_selector')[0] !== undefined

นี่คือพื้นฐานตอนนี้ทำทุกอย่างที่คุณต้องการ

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