我正在使用jQuery UI对话框。如果它是开放的,我想做一件事。如果关闭,我想做另一个。
我的问题是,如何检测jQuery UI对话框是否打开?
实际上,你必须明确地将它与真实比较。如果对话框尚不存在,它将不会返回false(如您所料),它将返回一个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
}
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; }