【发布时间】:2011-03-19 19:58:26
【问题描述】:
我正在使用 jQuery UI 对话框。如果它是开放的,我想做一件事。如果它关闭了,我想再做一个。
我的问题是,如何检测 jQuery UI 对话框是否打开?
【问题讨论】:
标签: jquery jquery-ui jquery-ui-dialog
我正在使用 jQuery UI 对话框。如果它是开放的,我想做一件事。如果它关闭了,我想再做一个。
我的问题是,如何检测 jQuery UI 对话框是否打开?
【问题讨论】:
标签: jquery jquery-ui jquery-ui-dialog
【讨论】:
$("#mydialog").hasClass("ui-dialog-content")初始化。见stackoverflow.com/questions/29528706/…
实际上,您必须明确地将其与 true 进行比较。如果对话框还不存在,它不会返回 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
}
【讨论】:
$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; }
【讨论】: