打开一个fancybox而另一个fancybox实例打开

当用户点击按钮时,我会显示一个指示用户应该等到操作完成的fancybox:

jQuery(document).ready(function () { $.fancybox('Please Wait...',{'modal':true}); }); 

现在我通过$ .post函数检查请求的操作并返回结果消息(操作成功或错误操作失败的原因)现在我想关闭第一个fancybox并显示新的fancybox与我从ajax得到的响应:

 $.post('someurl.aspx',{'somethingtopost':'value'}, function(data){ jQuery(document).ready(function () { $.fancybox(data); }); } ); 

问题是第二个fancybox没有显示。 关闭第一个fancybox时会有很多例子显示第二个fancybox(添加到onClosed属性)但是在这个中我不希望在关闭第一个fanybox之后显示第二个fanybox,我想在动作时显示它完成。

您可以随时触发第二个Fancybox,无论是否已经打开过(并且没有先关闭它)。 只需在动作完成后尝试触发第二个Fancybox。

第二个Fancybox窗口(一旦被触发)将替换第一个没有任何进一步关闭命令。

 function openFancybox() { setTimeout( function() {$('#delayed').trigger('click'); },10000); } $(document).ready(function() { $('#pageLoad').fancybox({ helpers: {overlay:{opacity: 0.3}} }).click(); openFancybox(); $('#delayed').fancybox({ helpers: {overlay:{opacity: 0.3}} }); }); // ready 

我在这里设置了一个示例页面 ,它在页面加载时启动Fancybox,然后在10秒后触发第二个Fancybox。

第二个触发后,第一个Fancybox会自动关闭。

UPDATE

或者你可能更喜欢这个版本

 function openFancybox() { setTimeout( function() {$('#delayed').trigger('click'); },10000); } $(document).ready(function() { $('#goProcess').click(function(){ $.fancybox({ href: '#wait', modal: true, helpers: {overlay:{opacity: 0.3}}, afterLoad: function() { openFancybox(); } }); // fancybox }); $('#delayed').fancybox({ helpers: {overlay:{opacity: 0.3}} }); }); // ready 

单击按钮打开fancybox,然后在10秒后(或在后台处理完成后触发第二个fancybox)。