0

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

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

<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 函数中关闭的?

谢谢

4

1 回答 1

0

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

于 2012-05-25T14:27:57.303 回答