Javascript 检测Fancybox 2是如何关闭的-jQuery
我使用fancybox显示包含表单的iFrame。提交表格后,我关闭fancybox,如下所示:Javascript 检测Fancybox 2是如何关闭的-jQuery,javascript,jquery,fancybox,Javascript,Jquery,Fancybox,我使用fancybox显示包含表单的iFrame。提交表格后,我关闭fancybox,如下所示: parent.jQuery.fancybox.close() 然后,我在afterClose事件上做了一些AJAX工作 我遇到的问题是,如果有人通过单击关闭按钮或单击fancybox外部的调光器来关闭fancybox,那么它仍然会在afterClose函数中调用AJAX函数 如何检测fancybox是如何关闭的,如果fancybox是这样关闭的,则仅运行afterClose功能: parent.jQ
parent.jQuery.fancybox.close()代码>
然后,我在afterClose
事件上做了一些AJAX工作
我遇到的问题是,如果有人通过单击关闭按钮或单击fancybox外部的调光器来关闭fancybox,那么它仍然会在afterClose
函数中调用AJAX函数
如何检测fancybox是如何关闭的,如果fancybox是这样关闭的,则仅运行afterClose
功能:
parent.jQuery.fancybox.close()代码>
我仍然需要给我的用户关闭fancybox的选项,这样我就不能禁用关闭按钮
更新
查看fancybox对象,我可以看到afterClose
函数有许多值:
启动afterClose
功能后,是否可以将调用者
值更新为我可以检查的值?我将如何执行此操作?尝试使用。当表单被提交时,触发您的自定义事件,让我们将其称为“fancybox:aftercloseajax”,并监听该事件,而不是AJAX内容
编辑:
不知道代码的外观,但可能的解决方案是:
$('form').on('submit', function(){
parent.jQuery.fancybox.close();
$('#targetDIV').trigger('fancybox:aftercloseajax');
});
$('#targetDIV').on('fancybox:aftercloseajax', function(){
//event handler
//do your ajax stuff as before
});
基本上,不要监听afterClose
事件,而是监听调用fancybox.close()时触发的自定义事件如果表单已提交,为什么不签入afterClose
事件?您可以通过javascript在submit按钮上添加一个标志
var flag = 0;
$(".custom-class-of-your-submit-button").bind("click", function () {
flag = 1;
});
在您的afterclose事件中
只需输入一条if语句:
if (flag == 1) {
\\ execute your AJAX code
}
希望能有帮助
编辑
您可以尝试在消息上发送标志,我想,但我尚未尝试:
听起来这是可能的-你能举个例子吗?谢谢@Borna,我尝试了一下,但没能成功。这里不存在范围问题吗?因此,我们关闭fancybox,但随后从我在fancybox中运行的脚本(我刚刚关闭)中调用一个函数,以触发父页面中的另一个函数。不知道您正在fancybox中的表单提交处理程序上运行。为什么不把它放在应用程序的全球范围内?或者我不是很了解你,我不明白这是怎么回事。提交按钮(在iFrame中)不在父页面上调用的afterClose
事件的范围之外吗我总是得到一个未定义的标志
错误。也许你可以试试这个?