我想在关闭时添加自动销毁对话框的功能,而不向当前项目中的每个对话框调用添加任何特殊代码。所以我认为它需要覆盖默认对话框close
事件。
我找到了一种方法(例如:How to extend a jquery ui widget ? (1.7)),但我不想只覆盖事件:我还需要保存事件的先前行为并添加$(this).dialog("destroy")
打电话给它。
有什么建议吗?
答案 0 :(得分:3)
我不是100%肯定这个的正确性,但我认为你可以安全地覆盖这样的关闭方法:
$.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库进行修改,可能有更好的方法来实现目标。请查看Dialog组件的可用事件:http://jqueryui.com/demos/dialog/。
答案 1 :(得分:1)
您可以将dialogclose
处理程序添加到页面的body
元素。
您可以找到示例here。
无需覆盖对话框类的close函数,只需使用对话框类提供的事件即可。
例如:
$("body").on("dialogclose", function(){
alert("closed");
});