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)代码>
对话内容