当用户点击按钮时,我会显示一个指示用户应该等到操作完成的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,我想在动作是时显示它完成。
答案 0 :(得分: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
我设置example page here在页面加载时启动Fancybox,然后在10秒后触发第二个Fancybox。
第一个Fancybox会在第二个Fancybox被触发后自动关闭。
<强>更新强>
或者您可能更喜欢this version
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 (或在后台处理完成后。)