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

时间:2011-09-12 01:19:40

标签: javascript jquery

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

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");
在完成其余功能后

触发。我想知道回调是否会完成这项工作,但我对回调知识如何实现它并不够熟悉。

非常感谢您的帮助。

3 个答案:

答案 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()调用的函数。

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