回调中的回调?

时间:2012-01-10 15:28:53

标签: jquery

我写了一个回调(我相信它被称为):

hugeFadeIn();

这是一个简单的代码,可以淡化某些内容,这样我就不会一遍又一遍地重复使用相同的代码。

然后我想在hugeFadeIn完成后执行一些代码... 所以我这样做了:

hugeFadeIn(){
    //la la la
});

那是错的,所以我这样做了:

$(hugeFadeIn(){
    //la la la
});

我仍然会遇到错误。我究竟做错了什么?谢谢大家:)

修改 根据要求,hugeFadeIn函数的正文:

function hugeFadeIn() {
    $("#huge-loader").fadeIn("fast");
}

5 个答案:

答案 0 :(得分:2)

如果您希望在hugeFadeIn完成后运行某些内容,则需要将回调传递给。

function hugeFadeIn(after) {
    // whatever
    after();
}

(如果hugeFadeIn褪色本身并且不依赖于调用本身需要回调的内容。)

OP编辑后

编辑。

function hugeFadeIn(after) {
    $("#huge-loader").fadeIn("fast", after);
}

答案 1 :(得分:1)

...接近

hugeFadeIn(function() {

    alert('My callback is running');

});

然后在hugeFadeIn()

hugeFadeIn = function( fn ) {

    fn();

}

答案 2 :(得分:1)

function hugeFadeIn(time, callback) {
    $('.something').fadeIn(time, callback);
}

那么

hugeFadeIn(500, doAjaxWhathever);

或类似的东西用于异步

$.HugeFade = function(item, time, callback) { $(item).fadeIn(time); callback();}
$.HugeFade('#myDiv', 1500, myCallback);

但如果您使用hugeFadeIn作为回调,则无法执行此操作

$('#myDiv').load(url, hugeFadeIn(500, callback2)); //wrong
// it should be..
$('#myDiv').load(url, function(){hugeFadeIn(500, callback2)});

答案 3 :(得分:1)

如果您需要对同一个元素执行某些操作,只需在第一个方法之后调用第二个方法

hugeFadeIn();
someOtherMethodCall();

如果你需要处理页面上的其他元素,你需要在第一个方法完成后强制调用第二个方法 - 使用延迟方法(http://api.jquery.com/delay/)

hugeFadeIn();
someOtherMethodCall();

someOtherMethodCall(time){
  $('#some-id').delay(time).hide();
}  

答案 4 :(得分:1)

当我写一个函数时,我通常会为回调设置一个参数:

function myFunction(param1, callback_param){

    alert(param1); // do stuff here 

    if(typeof(callback_param) == "function"){

        callback_param();

    }
}

这就是我怎么称呼它。

myFunction('Hello World', function(){
     alert('Yes!, this is the World, how can i help you?');
});

希望这有所贡献。 感谢