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

var isOpen = $( "#dialogName" ).dialog( "isOpen" );
$("#here").on("click", function(e){
    if(isOpen){
        $("#dialogName").dialog("close");
    }
});

有时我得到错误:



有时它找不到isOpen。我想做的是:

在单击#here时,它必须检查对话框是否仍然存在,然后close否则不执行任何操作。

最佳答案

isOpen是在现有对话框上调用的方法,而该对话框尚未初始化。

您应该首先初始化对话框,然后在click事件处理程序内部检查对话框当前是否为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");
    }
});

DEMO

10-06 08:16