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ライブラリを操作せずに、目標を達成するためのより良い方法があるかもしれません。Dialogコンポーネントで利用可能なイベントをご覧ください:http://jqueryui.com/demos/dialog/

于 2012-01-03T12:23:02.813 に答える
1

ページの要素にdialogcloseハンドラーを追加できます。body

ここでサンプルを見つけることができます。

ダイアログクラスのclose関数をオーバーライドする必要はありません。ダイアログクラスによって提供されるイベントを使用するだけです。

元:

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