jQuery UI事件功能扩展

时间:2012-01-03 12:03:16

标签: javascript jquery jquery-ui inheritance extending

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

我找到了一种方法(例如:How to extend a jquery ui widget ? (1.7)),但我不想只覆盖事件:我还需要保存事件的先前行为并添加$(this).dialog("destroy")打电话给它。

有什么建议吗?

2 个答案:

答案 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");
});