0

我想在关闭时添加自动销毁对话框的功能,而不向当前项目中的每个对话框调用添加任何特殊代码。所以我认为它需要覆盖默认的对话框close事件。

我找到了一种方法来做到这一点(例如:如何扩展 jquery ui 小部件?(1.7)),但我不想只是覆盖事件:我还需要保存事件的先前行为并在$(this).dialog("destroy")之后添加调用它。

有什么建议么?

4

2 回答 2

3

我不是 100% 确定这个的正确性,但我认为你可以像这样安全地覆盖 close 方法:

$.ui.dialog.prototype._originalClose = $.ui.dialog.prototype.close;
$.ui.dialog.prototype.close = function() {
        alert ('My stuff');
        $.ui.dialog.prototype._originalClose.apply(this, arguments);
};

你可以看到这个工作:http: //jsfiddle.net/8KKMm/

但是,避免覆盖外部库通常是个好主意。可能有更好的方法来实现您的目标,而无需使用 jQuery UI 库。请查看对话框组件的可用事件:http: //jqueryui.com/demos/dialog/

于 2012-01-03T12:23:02.813 回答
1

您可以将dialogclose处理程序添加到body页面的元素。

你可以在这里找到一个样本。

无需重写对话框类的关闭功能,只需使用对话框类提供的事件即可。

前任:

$("body").on("dialogclose", function(){
    alert("closed");
});
于 2012-01-03T12:24:46.050 回答