Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何打开一个又一个Fancybox关闭?_Javascript_Jquery_Fancybox - Fatal编程技术网

Javascript 如何打开一个又一个Fancybox关闭?

Javascript 如何打开一个又一个Fancybox关闭?,javascript,jquery,fancybox,Javascript,Jquery,Fancybox,我有两个Fancybox,正在尝试从第一个打开第二个(通过按钮或关闭第一个) 我希望能够在第一个fancybox关闭时打开第二个fancybox。或单击第一个窗口中的按钮打开第二个窗口 这是如何实现的?恐怕我没有太多的运气和事件联系在一起 --背风 更新: 使用callbackOnClose可以让我做一些简单的事情,比如提醒(“hi”),但我还没有打开另一个Fancybox $(document).ready(function() { $("a#hiddenLink").

我有两个Fancybox,正在尝试从第一个打开第二个(通过按钮或关闭第一个)

我希望能够在第一个fancybox关闭时打开第二个fancybox。或单击第一个窗口中的按钮打开第二个窗口

这是如何实现的?恐怕我没有太多的运气和事件联系在一起

--背风

更新:

使用callbackOnClose可以让我做一些简单的事情,比如提醒(“hi”),但我还没有打开另一个Fancybox

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

好的,我终于成功了(我第一次遇到fancybox)。似乎在关闭时调用了
callbackOnClose
,而不是在关闭后调用。因此,在第一个fancybox完全关闭之前,第二个fancybox无法弹出

诀窍?使用定时器延迟打开第二个。这决不是完美的答案,如果定时器设置得太短,可能会表现得很奇怪,如果设置得太长,则不理想。100毫秒适合我。这是密码

脚本:

$(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');
}
<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>
HTML:

$(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');
}
<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>

我是第一个爱幻想的人


这是为fancyBox 1.3+设计的。为了最有效地使用@o.k.w提出的超时技巧,我们需要知道fancyBox淡出需要多长时间。使用新的onClosed函数,我们可以使用currentOpts参数

$("a[rel='fancy1']").fancybox({
    onClosed: function(currentArray, currentIndex, currentOpts){
        setTimeout(function(){$("a[rel='fancy2']").click();},currentOpts.speedOut);
    }
});

这样你就不会有@o.k.w.指出的覆盖问题了。

这是我发现的解决方法

fancyBox版本:2


我从来没有尝试过,但似乎你必须使用“callbackOnClose”事件来触发另一个打开。很好的化身。。。随机巧合?还是我应该受宠若惊?;-)斯肯利夫,很久以前就发现了阿凡达,并且很喜欢它。恐怕我不知道是不是从你那里偷的。如果你愿意的话,请接受一点奉承o、 k.w是正确的。使用回调函数来实现这一点。(这就是说,我发现FancyBox有点挑剔。我目前正在寻找一个新的模态框插件)网络上似乎没有太多关于callbackOnClose的内容。有没有我可以看的例子?嗯,很奇怪,第二个fancybox没有显示覆盖图。你也有同样的问题吗?o、 k.w?哦,如果你点击“关闭第一个Fancybox”,第二个Fancybox就会出现覆盖图。如果通过其他方式关闭,则不会显示叠加。奇怪的无论如何,我对这个插件的一致性感觉不是很好。你怎么认为?
$("#first_fancybox_link").fancybox({        
    afterClose:function(){  
        $("#second_fancybox_link").fancybox({ 
            helpers:  {
                overlay : null
            },
            afterShow:function(){   
                $.fancybox.helpers.overlay.open({parent: $('body')});
            }
        }).trigger('click');
    }
}).trigger('click');