jQuery在回调函数中使用外部变量

时间:2013-10-09 00:26:56

标签: javascript jquery ajax

好的,这才是我所知道的:

function validate() {
var validated = true;

$('.alert-infobox').fadeIn("fast", function(){
   $('input.offer').each(function(){
       // do ajax code with async = false for each input for validate if something happens
       validate = false;
   });
});

}

if(validated){
   //do something
}

return validated;

现在我要做的是淡入和淡入运行后为每个输入ajax调用验证服务器端的输入,现在变量验证总是保持为真,我相信回调中的指令在fadeIn在不同的范围内,有没有办法在回调函数外部访问变量?

对不起,这里有点新鲜事:)

由于

1 个答案:

答案 0 :(得分:1)

validate函数中,它的范围不同。回调将在你的if语句之后运行。

尝试以下调试代码:

function validate() {
    var validated = true;
    console.log("Before fadeIn");
    $('.alert-infobox').fadeIn("fast", function(){
       console.log("Callback!");
       $('input.offer').each(function(){
           // do ajax code with async = false for each input for validate if something happens
           validated = false;
       });
    });
    console.log("After fadeIn");
}

validate();

您将按以下顺序获得输出:

Before fadeIn

After fadeIn

Callback!

为什么呢?因为回调是在动画完成后调用的,大约在200多毫秒之后。