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