-2

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

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回调中的指令在不同的范围,有没有办法在回调函数之外访问变量?

抱歉有点新在这里:)

谢谢

4

1 回答 1

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+ 毫秒之后。

于 2013-10-09T00:36:27.823 回答