如何在关闭对话框时在JqueryUI对话框上执行回调

时间:2015-11-02 16:34:50

标签: javascript jquery jquery-ui

我正在使用JueryUI对话框来显示警告消息。 我遇到的问题是回调立即被执行。我希望只有在对话框关闭后才能执行回调。

在对话框关闭之前,有没有正确的方法来确保回调不执行?

 myAlert = function (title, msg, callback) {
        var alertElement = $('#alertElement ');
            alertElement .dialog({
                modal: false,
                resizable: false,
                width: 500,
                buttons: {
                    OK: function () {
                        $(this).dialog("close");
                    }
                },
                open: function (event, ui) {
                    $(this).parent().find('.ui-dialog-titlebar-close').hide(); 
                    $(this).parent().find('.ui-dialog-buttonpane button:first').focus();
                },
                close: function () {
                    if (typeof callback == "function")
                    { callback(); }
                }
            });
        }
    };

这是我的电话......

var urlString = "some url string";
function printWindow(urlString) {            
    window.open(urlString, 'Print', "toolbar=no,menubar=no,status=no");
};

myAlert("Warning", "This is a warning.", printWindow(url));

1 个答案:

答案 0 :(得分:1)

回调会立即执行,因为您使用()调用它,因此printWindow方法的返回值将传递给myAlert

要稍后通过printWindow作为参数传递url,您可以使用bind方法:

myAlert("Warning", "This is a warning.", printWindow.bind(null,url));

bind方法的返回值是一个新的printWindow函数,其第一个参数将是传递给bind的第二个参数(url)。