0

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

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(); }
});

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

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

我称之为:

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

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

4

2 回答 2

1

您应该编写以下内容:

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

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

编辑:要删除该功能,您可以调用unbind('dialogclose').

于 2009-12-29T16:34:54.030 回答
1

中使用的语法setCloseFunction仅在您初始化对话框时是正确的。如果对话框已经存在,就像您的情况一样,您通常会更改如下选项:

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

对于事件,例如close,您将侦听器绑定到它:

dlg1.bind('dialogclose', function(event, ui) {
  ...
});
于 2009-12-29T16:37:05.120 回答