jquery对话框关闭未触发

时间:2009-12-29 16:27:28

标签: jquery-ui-dialog

我已经在页面加载上定义了我的对话框。我可以看到对话框,到目前为止一切似乎都很好:

dlg1 = $("#modalHolder");
dlg1 = dlg1.dialog({
    width: 300,
    height: 150,
    modal: true,
    autoOpen: false,
    resizable: false,
    closeOnEscape: false,
    draggable: false,
    overlay: {
        backgroundColor: 'red',
        opacity: 0.65
    },
    open: function(event, ui) { $(".ui-dialog-titlebar-close").hide(); }
});

现在我想动态设置close事件,所以我尝试了这个:

function setCloseFunction(fun)
{
    dlg1.dialog({
        close: function(event, ui)
        {
          alert("2");
          fun();
        }
    });
}

我称之为:

setCloseFunction(new Function("alert('1')"));

但是,关闭对话框时,警报永远不会出现。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您应该写下以下内容:

dlg1.bind('dialogclose', function(event, ui) {
    alert("2");
    fun();
});

setCloseFunction(function() { alert('1'); });

编辑:要删除该功能,您可以拨打unbind('dialogclose')

答案 1 :(得分:1)

setCloseFunction中使用的语法仅在初始化对话框时才正确。如果对话框已存在(如您的情况),则通常会更改以下选项:

dlg1.dialog('option', optionName, value);

对于close之类的事件,您可以将侦听器绑定到它:

dlg1.bind('dialogclose', function(event, ui) {
  ...
});