我正在使用jquery-ui-dialog插件
我正在寻找在某些情况下关闭对话框时刷新页面的方法 .
有没有办法从对话中捕获一个关闭事件?
我知道我可以在单击关闭按钮时运行代码但不包括用户使用escape或右上角的x关闭 .
从jQuery 1.7开始,.on()方法是将事件处理程序附加到文档的首选方法 .
因为没有人真正使用使用创建答案 . on() 而不是 bind() 我决定创建一个 .
on()
bind()
$('div#dialog').on('dialogclose', function(event) { //custom logic fired after dialog is closed. });
在示例下添加选项'close'并执行您想要的内联函数
close: function(e){ //do something }
我找到了!
您可以使用以下代码捕获close事件:
$('div#popup_content').on('dialogclose', function(event) { alert('closed'); });
显然,我可以用我需要做的任何事情来取代警报 .Edit: 从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
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 } });
对话框的“close”属性给出了close事件 .
你也可以尝试这个
$("#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 });
如果我正在谈论,不会 $(window).unload() (对话框窗口)给你需要的钩子吗?
(如果我误解了,并且你在谈论通过CSS而不是弹出式浏览器窗口创建的对话框,那么 all 关闭该窗口的方法是你可以注册点击手的元素 . )
Edit: 啊,我现在看到你在谈论jquery-ui对话框,这是通过CSS制作的 . 您可以通过使用类 ui-dialog-titlebar-close 注册元素的单击处理程序来挂钩关闭窗口的 X .
也许更有用的是你告诉你如何快速解决这个问题 . 在显示对话框时,只需弹出FireBug和 Inspect 可以关闭窗口的元素 . 您将立即看到它们的定义方式,并为您提供注册点击处理程序所需的内容 .
所以要直接回答你的问题,我相信答案真的是“不” - 没有一个你可以挂钩的关闭事件,但是“是” - 你可以挂钩所有方法来相当容易地关闭对话框并得到你想要什么 .
您可以尝试使用以下代码捕获任何项目的结束事件:页面,对话框等 .
$("#dialog").live('pagehide', function(event, ui) { $(this).hide(); });
10 回答
因为没有人真正使用使用创建答案 .
on()
而不是bind()
我决定创建一个 .在示例下添加选项'close'并执行您想要的内联函数
我找到了!
您可以使用以下代码捕获close事件:
显然,我可以用我需要做的任何事情来取代警报 .
Edit: 从Jquery 1.7开始,bind()已成为on()
我相信您也可以在创建对话框时执行此操作(从我执行的项目中复制):
注
close: CloseFunction
对话框的“close”属性给出了close事件 .
你也可以尝试这个
这对我有用...
如果我正在谈论,不会 $(window).unload() (对话框窗口)给你需要的钩子吗?
(如果我误解了,并且你在谈论通过CSS而不是弹出式浏览器窗口创建的对话框,那么 all 关闭该窗口的方法是你可以注册点击手的元素 . )
Edit: 啊,我现在看到你在谈论jquery-ui对话框,这是通过CSS制作的 . 您可以通过使用类 ui-dialog-titlebar-close 注册元素的单击处理程序来挂钩关闭窗口的 X .
也许更有用的是你告诉你如何快速解决这个问题 . 在显示对话框时,只需弹出FireBug和 Inspect 可以关闭窗口的元素 . 您将立即看到它们的定义方式,并为您提供注册点击处理程序所需的内容 .
所以要直接回答你的问题,我相信答案真的是“不” - 没有一个你可以挂钩的关闭事件,但是“是” - 你可以挂钩所有方法来相当容易地关闭对话框并得到你想要什么 .
您可以尝试使用以下代码捕获任何项目的结束事件:页面,对话框等 .