我想在关闭时添加自动销毁对话框的功能,而不向当前项目中的每个对话框调用添加任何特殊代码。所以我认为它需要覆盖默认的对话框close
事件。
我找到了一种方法来做到这一点(例如:如何扩展 jquery ui 小部件?(1.7)),但我不想只是覆盖事件:我还需要保存事件的先前行为并在$(this).dialog("destroy")
之后添加调用它。
有什么建议么?
我想在关闭时添加自动销毁对话框的功能,而不向当前项目中的每个对话框调用添加任何特殊代码。所以我认为它需要覆盖默认的对话框close
事件。
我找到了一种方法来做到这一点(例如:如何扩展 jquery ui 小部件?(1.7)),但我不想只是覆盖事件:我还需要保存事件的先前行为并在$(this).dialog("destroy")
之后添加调用它。
有什么建议么?
我不是 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/。
您可以将dialogclose
处理程序添加到body
页面的元素。
你可以在这里找到一个样本。
无需重写对话框类的关闭功能,只需使用对话框类提供的事件即可。
前任:
$("body").on("dialogclose", function(){
alert("closed");
});