当另一个fancybox实例打开时打开一个fancybox

Ash*_*ani 4 jquery fancybox

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

jQuery(document).ready(function () {
             $.fancybox('Please Wait...',{'modal':true});
        });
Run Code Online (Sandbox Code Playgroud)

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

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

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

JFK*_*JFK 7

您可以随时触发第二个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
Run Code Online (Sandbox Code Playgroud)

在这里设置了一个示例页面,在页面加载时启动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
Run Code Online (Sandbox Code Playgroud)

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