设置jQuery代码以在函数完成后触发

我有以下function(我从中间删除了对我的问题不重要的代码):

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"); 

在其余function完成触发。 我想知道回调是否可以完成这项工作,但我在回调中并不熟悉如何实现它。

非常感谢您的帮助。

如果通过“在函数的其余部分之后”,你的意思是“在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); } }); } 

假设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); } }); } 

它将在其余function完成后执行; 语句按顺序执行。

你是说你希望它在超时后执行吗? 如果是这样,请创建一个封装两个调用和open()调用的函数。

如果没有,您可能需要更清楚一些。