我有以下功能(我从中间删除了对我的问题不重要的代码):
function shadowBoxRefresh(){
$("#sb-nav-next, #sb-nav-previous").click(function(){
$('#sb-container').addClass("visibility_stay");
$('#sb-overlay').addClass("opacity_stay");
Shadowbox.close();
Shadowbox.clearCache();
shadowBoxSetup();
setTimeout("Shadowbox.open(c)", 400)
$('#sb-container').removeClass("visibility_stay");
$('#sb-overlay').removeClass("opacity_stay");
}
});
}
我的问题是,我需要这部分:
$('#sb-container').removeClass("visibility_stay");
$('#sb-overlay').removeClass("opacity_stay");
在完成其余功能后触发。我想知道回调是否会完成这项工作,但我对回调知识如何实现它并不够熟悉。
非常感谢您的帮助。
答案 0 :(得分:3)
如果通过"在剩下的功能之后"你的意思是,"在Shadowbox.open(c)"之后发生.4秒后,然后执行此操作:
function shadowBoxRefresh(){
$("#sb-nav-next, #sb-nav-previous").click(function(){
$('#sb-container').addClass("visibility_stay");
$('#sb-overlay').addClass("opacity_stay");
Shadowbox.close();
Shadowbox.clearCache();
shadowBoxSetup();
setTimeout(function () {
Shadowbox.open(c);
$('#sb-container').removeClass("visibility_stay");
$('#sb-overlay').removeClass("opacity_stay");
}, 400);
}
});
}
答案 1 :(得分:0)
假设shadowBoxSetup()就在你想要的时候
function shadowBoxSetup( callback ) {
// Your code...
callback();
}
使用
function shadowBoxRefresh(){
$("#sb-nav-next, #sb-nav-previous").click(function(){
$('#sb-container').addClass("visibility_stay");
$('#sb-overlay').addClass("opacity_stay");
Shadowbox.close();
Shadowbox.clearCache();
shadowBoxSetup(function(){
$('#sb-container').removeClass("visibility_stay");
$('#sb-overlay').removeClass("opacity_stay");
});
setTimeout("Shadowbox.open(c)", 400);
}
});
}
答案 2 :(得分:0)
将在其余功能完成后执行;语句按顺序执行。
你是说你希望它在超时后执行?如果是这样,请创建一个封装两个调用和open()
调用的函数。
如果没有,您可能需要更清楚一点。