ฉันใช้กล่องโต้ตอบ jQuery UI ถ้าเปิดอยู่ฉันอยากทำอย่างหนึ่ง ถ้าปิดก็อยากทำอีก
คำถามของฉันคือฉันจะตรวจสอบได้อย่างไรว่ากล่องโต้ตอบ jQuery UI เปิดอยู่หรือไม่?
ฉันใช้กล่องโต้ตอบ jQuery UI ถ้าเปิดอยู่ฉันอยากทำอย่างหนึ่ง ถ้าปิดก็อยากทำอีก
คำถามของฉันคือฉันจะตรวจสอบได้อย่างไรว่ากล่องโต้ตอบ jQuery UI เปิดอยู่หรือไม่?
คำตอบ:
หากคุณอ่านเอกสาร
$('#mydialog').dialog('isOpen')
วิธีนี้ส่งคืนบูลีน (จริงหรือเท็จ) ไม่ใช่วัตถุ jQuery
$("#mydialog").hasClass("ui-dialog-content")
หรือไม่ ดูstackoverflow.com/questions/29528706/…
จริงๆแล้วคุณต้องเปรียบเทียบกับจริงอย่างชัดเจน หากยังไม่มีกล่องโต้ตอบจะไม่ส่งคืนเท็จ (ตามที่คุณคาดหวัง) จะส่งคืนวัตถุ DOM
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
หากคุณต้องการตรวจสอบว่ากล่องโต้ตอบเปิดอยู่ในองค์ประกอบใดองค์ประกอบหนึ่งหรือไม่คุณสามารถทำได้:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
หรือหากคุณเพียงต้องการตรวจสอบว่าองค์ประกอบนั้นมองเห็นได้หรือไม่คุณสามารถทำได้:
if ($('#elem').is(':visible')) {
// do something
}
หรือ...
if ($('#elem:visible').length) {
// do something
}
$dialog.hasClass('ui-dialog-content')
กล่องโต้ตอบ jQuery มีisOpen
คุณสมบัติที่สามารถใช้เพื่อตรวจสอบว่ากล่องโต้ตอบ jQuery เปิดอยู่หรือไม่
สามารถดูตัวอย่างได้ที่ลิงค์นี้: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
ความคิดเห็นของ Nick Craver เป็นวิธีที่ง่ายที่สุดในการหลีกเลี่ยงข้อผิดพลาดที่เกิดขึ้นหากยังไม่ได้กำหนดกล่องโต้ตอบ:
if ($('#elem').is(':visible')) {
// do something
}
คุณควรตั้งค่าการเปิดเผยใน CSS ของคุณก่อนโดยใช้เพียง:
#elem { display: none; }