jquery-ui-dialog
プラグインを使用しています
ダイアログが閉じられたときにページを更新する方法を探しています。
ダイアログから閉じるイベントをキャプチャする方法はありますか?
閉じるボタンがクリックされたときにコードを実行できることはわかっていますが、ユーザーがエスケープまたは右上隅の x で閉じることはカバーされていません。
jquery-ui-dialog
プラグインを使用しています
ダイアログが閉じられたときにページを更新する方法を探しています。
ダイアログから閉じるイベントをキャプチャする方法はありますか?
閉じるボタンがクリックされたときにコードを実行できることはわかっていますが、ユーザーがエスケープまたは右上隅の x で閉じることはカバーされていません。
私はそれを見つけた!
次のコードを使用して、close イベントをキャッチできます。
$('div#popup_content').on('dialogclose', function(event) {
alert('closed');
});
明らかに、アラートを必要なものに置き換えることができます。
編集: Jquery 1.7 以降、bind() は on() になりました
ダイアログの作成中にもできると思います(私が行ったプロジェクトからコピーしました):
dialog = $('#dialog').dialog({
modal: true,
autoOpen: false,
width: 700,
height: 500,
minWidth: 700,
minHeight: 500,
position: ["center", 200],
close: CloseFunction,
overlay: {
opacity: 0.5,
background: "black"
}
});
ノートclose: CloseFunction
$("#dialog").dialog({
autoOpen: false,
resizable: false,
width: 400,
height: 140,
modal: true,
buttons: {
"SUBMIT": function() {
$("form").submit();
},
"CANCEL": function() {
$(this).dialog("close");
}
},
close: function() {
alert('close');
}
});
Uもこれを試すことができます
$("#dialog").dialog({
autoOpen: false,
resizable: true,
height: 400,
width: 150,
position: 'center',
title: 'Term Sheet',
beforeClose: function(event, ui) {
console.log('Event Fire');
},
modal: true,
buttons: {
"Submit": function () {
$(this).dialog("close");
},
"Cancel": function () {
$(this).dialog("close");
}
}
});
これは私のために働いたものです...
$('#dialog').live("dialogclose", function(){
//code to run on dialog close
});
jQuery 1.7 の時点で、.on() メソッドは、イベント ハンドラーをドキュメントにアタッチするための推奨メソッドです。
を使用して実際に回答を作成した人は誰もいなかったからです。on()
代わりに、bind()
作成することにしました。
$('div#dialog').on('dialogclose', function(event) {
//custom logic fired after dialog is closed.
});
あなたが話しているウィンドウのタイプを理解している場合、$(window).unload() (ダイアログウィンドウ用) は必要なフックを提供しませんか?
(そして、私が誤解していて、ポップアップ ブラウザー ウィンドウではなく、CSS を介して作成されたダイアログ ボックスについて話している場合、そのウィンドウを閉じるすべての方法は、クリック ハンドラーを登録できる要素です。)
編集:ああ、CSS で作成された jquery-ui ダイアログについて話しているようです。要素のクリック ハンドラをクラスui-dialog-titlebar-close に登録することで、ウィンドウを閉じるXをフックできます。
もっと役立つのは、おそらく、それをすばやく理解する方法を教えてくれることです。ダイアログを表示しているときに、FireBug を開いて、ウィンドウを閉じることができる要素を調べるだけです。それらがどのように定義されているかがすぐにわかり、クリック ハンドラーを登録するために必要なものが得られます。
したがって、あなたの質問に直接答えるには、答えは本当に「いいえ」だと思います-フックできるクローズイベントはありませんが、「はい」-ダイアログボックスをかなり簡単に閉じるためのすべての方法をフックして取得できますあなたが欲しいもの。
次のコードを試して、任意のアイテムの終了イベントをキャプチャできます:ページ、ダイアログなど。
$("#dialog").live('pagehide', function(event, ui) {
$(this).hide();
});