Javascript 检查对话框isOpen是否抛出;无法在初始化之前对对话框调用方法";错误

Javascript 检查对话框isOpen是否抛出;无法在初始化之前对对话框调用方法";错误,javascript,jquery,jquery-ui,jquery-ui-dialog,Javascript,Jquery,Jquery Ui,Jquery Ui Dialog,我正在使用一个对话框,并用我在文档中找到的代码检查它 var isOpen = $( "#dialogName" ).dialog( "isOpen" ); $("#here").on("click", function(e){ if(isOpen){ $("#dialogName").dialog("close"); } }); 有时我会出错: 未捕获错误:无法在初始化之前调用对话框上的方法; 试图调用方法“close” 有时它找不到等参素。我想做的是: 单

我正在使用一个对话框,并用我在文档中找到的代码检查它

var isOpen = $( "#dialogName" ).dialog( "isOpen" );
$("#here").on("click", function(e){
    if(isOpen){
        $("#dialogName").dialog("close");
    } 
});
有时我会出错:

未捕获错误:无法在初始化之前调用对话框上的方法; 试图调用方法“close”

有时它找不到等参素。我想做的是:


单击此处必须检查对话框是否处于活动状态,然后关闭,否则不执行任何操作。

isOpen
是在对话框尚未初始化时在现有对话框上调用的方法

您应该首先初始化对话框,然后在
内单击事件处理程序,检查对话框当前是否打开

// initialize the dialog:
var myDialog = $( "#dialogName" ).dialog({
    // dialog settings:
    autoOpen : false,
    // ... 
});

$("#here").on("click", function(e){
    // on click, check if is opened:
    var isOpen = myDialog.dialog("isOpen");
    if(isOpen){
       myDialog.dialog("close");
    } 
});

您似乎还需要检查
#dialogName
是否已被对话框化。一种可能的检查方法是查看分配给对话框元素的类名:

$("#dialog").hasClass("ui-dialog-content") && $("#dialog").dialog("isOpen")
演示

$(函数(){
$(“#init”).one(“单击”,函数(){
$(“#dialog”).dialog();
$(this).val(“单击打开对话框”)。在(“单击”,函数()上){
$(“对话框”)。对话框(“打开”);
});
});
$(“#此处”)。在(“单击”上,函数(e){
if($(“#dialog”).hasClass(“ui对话框内容”)&&($(“#dialog”).dialog(“isOpen”)){
$(“对话框”)。对话框(“关闭”);
}否则{
警报(“对话框未初始化或对话框未打开”);
}
});
});
导入url(//ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/redmond/jqueryui.min.css)

对话内容