如何在另一个关闭后打开一个Fancybox?

Lee*_*one 4 javascript jquery fancybox

我有2个fancyboxes,我试图从第一个打开第二个(通过按钮或关闭第一个)...

<div id="firstFancybox" style="display:none">
   <p>I'm the first Fancybox!</p>
   <a id="fancyboxButton" href="#secondFancybox">Close first Fancybox</a>
</div>

<a id="hiddenLink" href="#firstFancybox"></a>

<div id="secondFancybox" style="display:none">
   <p>I'm the second Fancybox!</p>
</div>
Run Code Online (Sandbox Code Playgroud)

第一个Fancybox正在页面加载时激活..

$(document).ready(function() {
    $("a#hiddenLink").fancybox({ 'hideOnContentClick': false, 'frameWidth': 300, 'frameHeight': 300 }).trigger('click');
    $("a#fancyboxButton").fancybox();
    });
Run Code Online (Sandbox Code Playgroud)

我希望能够在第一个关闭时打开第二个fancybox.或者......单击第一个按钮打开第二个.

这是如何实现的?我对运动的恐惧并不紧张.

- 李

更新:

使用callbackOnClose允许我做一些简单的事情,比如alert('hi'),但我还没有设法打开另一个Fancybox.

    $(document).ready(function() {
        $("a#hiddenLink").fancybox({ 'hideOnContentClick': false, 'frameWidth': 300, 'frameHeight': 300, 
        callbackOnClose: function() { alert('hi'); } 
        }).trigger('click');
    });
Run Code Online (Sandbox Code Playgroud)

o.k*_*k.w 6

好吧,我终于开始工作了(我第一次遇到fancybox).它似乎callbackOnClose是在关闭时调用,而不是在关闭后调用.因此,第二个fancybox在第一个完全关闭之后才能弹出.

诀窍?使用计时器延迟打开第二个.这绝不是完美的答案,如果定时器设置得太短会表现得很奇怪,如果设置得太长则不理想.100ms适合我.这是代码.

脚本:

$(document).ready(function() {
    $("a#hiddenLink").fancybox({ 'hideOnContentClick': false, 'frameWidth': 300, 'frameHeight': 300, 
      callbackOnClose: function() { window.setTimeout('open2()',100); } 
    }).trigger('click');
});
function open2(){
    $("a#fancyboxButton").fancybox().trigger('click');
}
Run Code Online (Sandbox Code Playgroud)

HTML:

<div id="firstFancybox" style="display:none">
   <p>I'm the first Fancybox!</p>
   <a href="#" onclick="open2();">Close first Fancybox</a>
</div>
<a id="hiddenLink" href="#firstFancybox"><!--for first fancy box--></a>
<a id="fancyboxButton" href="#secondFancybox"><!--for second fancy box--></a>
Run Code Online (Sandbox Code Playgroud)