我有以下代码来检测jquery ui对话框是否打开:
if ($("#dialog-myDialog").dialog("isOpen")) {
return;
}
工作正常,但我发现在第一个对话框初始化之前调用此代码的情况,这个if语句在这种情况下似乎只是爆炸。
检查jquery ui对话框是否已初始化的最佳方法是什么,以便我能正确处理这种情况。
答案 0 :(得分:17)
测试元素是否具有ui-dialog-content
类:
if ($("#dialog-myDialog").hasClass("ui-dialog-content") &&
$("#dialog-myDialog").dialog("isOpen")) {
return;
}
答案 1 :(得分:3)
如果您使用的解决方案依赖于由您无法控制的组件添加的css类,那么如果组件的新版本更改其管理类的方式,则您将面临无法工作的风险
更可靠的解决方案是在对话框初始化时添加自己的存在指示符:
$("#popup").attr("_dialogInitialized", "yes").dialog( { ... } )
然后在需要时检查指标:
if ($("#popup[_dialogInitialized]").length == 1) {
// dialog has been previously initialized
} else {
// dialog has been not yet been initialized
}
答案 2 :(得分:-1)
在初始化时添加一个类:
$("selector").addClass("initialized").dialog( { ... } );
然后在需要时检查课程:
if ($("selector").hasClass("initialized")) { ... }