我正在使用jquery-ui-dialog
插件
在某些情况下,当对话框关闭时,我正在寻找刷新页面的方法。
有没有办法从对话框中捕获关闭事件?
我知道单击关闭按钮时可以运行代码,但这并不覆盖使用转义或右上角的x关闭的用户。
我正在使用jquery-ui-dialog
插件
在某些情况下,当对话框关闭时,我正在寻找刷新页面的方法。
有没有办法从对话框中捕获关闭事件?
我知道单击关闭按钮时可以运行代码,但这并不覆盖使用转义或右上角的x关闭的用户。
Answers:
我找到了!
您可以使用以下代码捕获close事件:
$('div#popup_content').on('dialogclose', function(event) {
alert('closed');
});
显然,我可以将警报替换为需要执行的任何操作。
编辑:从jQuery 1.7开始,bind()已成为on()
$('div#popup_content')
对吗?考虑到我的对话框是这样打开的,我应该用它代替什么jQuery.fn.dialog.open({})
$('body').on('dialogclose', '.ui-dialog', function(){...});
我相信您也可以在创建对话框时完成此操作(从我做过的项目中复制):
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
var CloseFunction = function() { //Do your custom closing stuff here };
overlay
两次。那不是必需品吗?
你也可以尝试
$("#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");
}
}
});
在样本下添加选项“ close”,然后执行所需的内联函数
close: function(e){
//do something
}
如果我了解您所谈论的窗口类型,则不会使用$ {window).unload()(用于对话框窗口)是否不会为您提供所需的钩子?
(如果我误解了,而您正在谈论的是通过CSS而不是弹出式浏览器窗口创建的对话框,那么关闭该窗口的所有方式都是您可以为其注册点击处理程序的元素。)
编辑:啊,我知道您现在正在谈论通过CSS制作的jquery-ui对话框。您可以通过使用ui-dialog-titlebar-close类为元素注册点击处理程序来挂钩X,以关闭窗口。
也许更有用的是告诉您如何快速解决这一问题。在显示对话框时,只需弹出FireBug并检查可以关闭窗口的元素。您将立即看到它们的定义方式,这将为您提供注册点击处理程序所需的条件。
因此,要直接回答您的问题,我相信答案确实是“否”-您没有可以关闭的关闭事件,但是是“是”-您可以通过各种方式轻松地关闭对话框并获得你想要什么。
您可以尝试使用以下代码捕获任何项目的关闭事件:页面,对话框等。
$("#dialog").live('pagehide', function(event, ui) {
$(this).hide();
});