当用户点击按钮时,我会显示一个指示用户应该等到操作完成的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,我想在动作是时显示它完成.
您可以随时触发第二个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).
| 归档时间: |
|
| 查看次数: |
7992 次 |
| 最近记录: |