如何判断jquery ui对话框查询是否已初始化?

时间:2015-04-09 02:27:34

标签: jquery jquery-ui jquery-ui-dialog

我有以下代码来检测jquery ui对话框是否打开:

if ($("#dialog-myDialog").dialog("isOpen")) {
      return;
}

工作正常,但我发现在第一个对话框初始化之前调用此代码的情况,这个if语句在这种情况下似乎只是爆炸。

检查jquery ui对话框是否已初始化的最佳方法是什么,以便我能正确处理这种情况。

3 个答案:

答案 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")) { ... }