在fancybox onClosed函数中,如何访问被单击以关闭fancybox的元素

时间:2012-05-25 14:09:54

标签: fancybox

在onClosed函数中,我想确定单击以关闭fancybox的元素的ID。我需要根据框的关闭方式提供不同的onClosed行为。

假设我的fancybox中有一个按钮,用户可以点击该按钮关闭该框并转到注册页面:

<button id="user-register" onclick="parent.jQuery.fancybox.close();parent.location.href='/user/register';"><h3>Sign Up <strong>Now!</strong></h3></button>

在打开盒子的我的fancybox调用中,我有一个onClose函数,通常会重新加载父代:

'onClosed': function() { 
        /*mytest = $('#fancybox-content iframe').contents().find('#user-register');
        console.log(mytest);*/
        if ($('body').hasClass('not-logged-in')) { 
          parent.location.reload(true);
        }  
      } 

重新加载父级的原因是因为在某些情况下用户将在fancybox中登录,并且我希望父级反映用户已登录。但是在用户单击注册按钮的情况下,我这样做不希望父级重新加载,因为那时用户没有被发送到/ user / register。您可以在我的onClosed函数中看到如何在注释掉的代码中找到一种方法来访问#user-registered按钮。我希望它的长度在onClosed函数中不会为零,因为它是单击以关闭框的元素,但实际上它的长度在此上下文中始终为零,可能是因为当onClosed函数时框已经关闭运行。我也尝试检查onClosed函数中可用的arguments变量,但是它引用了打开框的元素,而不是关闭它的元素。

我还尝试将一个参数传递给close()函数,以查看是否在onClosed函数中以某种方式可用 - 例如,close('user-register')。但是,这个arg似乎没有。

如何知道如何从onClosed函数中关闭一个框?

谢谢

1 个答案:

答案 0 :(得分:0)

在父页面上声明一个变量(具有全局范围),您可以使用parent.varname在fancybox页面中访问该变量。设置此变量的值,单击按钮或在fancybox关闭之前触发的任何事件。然后在父页面中,您可以在fancybox的OnClosed事件中检查此变量的值。希望这会有所帮助。