jQuery UI事件功能扩展

jQuery UI event functionality extending

本文关键字:扩展 功能 事件 UI jQuery      更新时间:2023-09-26

我想在关闭时添加自动销毁对话框的功能,而不需要为当前项目中的每个对话框调用添加任何特殊代码。所以我认为它需要覆盖默认的对话框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库。请务必查看Dialog组件的可用事件:http://jqueryui.com/demos/dialog/.

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

你可以在这里找到一个示例。

不需要重写dialog类的close函数,您可以简单地使用dialog类提供的事件。

,

$("body").on("dialogclose", function(){
    alert("closed");
});