我正在使用jQuery UI对话框。如果它是开放的,我想做一件事。如果关闭,我想做另一个。
我的问题是,如何检测jQuery UI对话框是否打开?
答案 0 :(得分:167)
答案 1 :(得分:51)
实际上,你必须明确地将它与true进行比较。如果对话框尚不存在,它将不会返回false(如您所料),它将返回一个DOM对象。
if ($('#mydialog').dialog('isOpen') === true) {
// true
} else {
// false
}
答案 2 :(得分:20)
如果要检查对话框是否在特定元素上打开,则可以执行此操作:
if ($('#elem').closest('.ui-dialog').is(':visible')) {
// do something
}
或者,如果您只是想检查元素本身是否可见,您可以这样做:
if ($('#elem').is(':visible')) {
// do something
}
或者...
if ($('#elem:visible').length) {
// do something
}
答案 3 :(得分:2)
jQuery对话框有一个isOpen
属性,可用于检查jQuery对话框是否打开。
您可以在此链接中看到示例: http://www.codegateway.com/2012/02/detect-if-jquery-dialog-box-is-open.html
答案 4 :(得分:0)
Nick Craver的评论是最简单的,可以避免在对话框尚未定义时出现错误:
if ($('#elem').is(':visible')) {
// do something
}
您应该首先在CSS中设置可见性,只需使用:
#elem { display: none; }