陷入对话closures事件

我正在使用jquery-ui的对话框。

我正在寻找刷新页面的方式,在某些情况下,当对话框closures。

有没有办法从对话框中捕捉closures事件?

我知道我可以在点击closuresbutton时运行代码,但是不能覆盖用户使用退出或右上angular的xclosures。

我find了!

您可以使用以下代码捕捉closures事件:

$('div#popup_content').on('dialogclose', function(event) { alert('closed'); }); 

显然,我可以用我需要做的任何事情来代替警报。
编辑:截至Jquery 1.7,bind()已成为on()

我相信你也可以在创build对话框的时候做这件事(从我做的一个项目中复制):

 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'); }** }); 
 $( "#dialogueForm" ).dialog({ autoOpen: false, height: "auto", width: "auto", modal: true, my: "center", at: "center", of: window, close : function(){ // functionality goes here } }); 

对话的“closures”属性给出了同样的closures事件。

你也可以试试这个

 $("#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()我决定创build一个。

 $('div#dialog').on('dialogclose', function(event) { //custom logic fired after dialog is closed. }); 

如果我理解你正在讨论的窗口的types,不会$(window).unload() (对话窗口)给你你需要的钩子?

(如果我误解了,并且你正在讨论的是通过CSS而不是popup式浏览器窗口创build的对话框,那么closures该窗口的所有方法都是可以注册点击手柄的元素。)

编辑:啊,我现在看到你正在谈论jQuery UI对话框,这是通过CSS。 你可以通过注册一个点击处理程序来closures窗口,使用类ui-dialog-titlebar-close来closures窗口。

也许更有用的是,你告诉你如何快速弄清楚。 在显示对话框时,只需popupFireBug并检查可以closures窗口的元素。 您将立即看到它们是如何定义的,并为您提供注册点击处理程序所需的信息。

所以为了直接回答你的问题,我相信答案真的是“不” – 没有可以钩的closures事件,而是“是” – 你可以很容易地钩住所有closures对话框的方法,并获得你要什么。

像样例下添加选项“closures”,并做你想要的内联函数

 close: function(e){ //do something } 

您可以尝试以下代码来捕获任何项目的closures事件:页面,对话框等

 $("#dialog").live('pagehide', function(event, ui) { $(this).hide(); });