2013-10-09 2 views
-2

Ok это то, что я не имею пока знать:JQuery с использованием внешних переменных внутри функции обратного вызова

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 находится в разных областях, есть ли способ доступа к переменной вне функции обратного вызова?

К сожалению вид нового здесь :)

Благодаря

+0

Сфера не проблема, скорее, что fadeIn является асинхронным и возвращается до того, как проверка будет изменена. – Musa

+3

Я вижу опечатку там 'validate ** d **' – Peter

+0

Хотя проблема с областью, и он пытается вызвать 'validated' вне функции. Я не знаю, как помочь вам здесь, так как я точно не знаю, для чего вам нужна эта переменная validated. – Colandus

ответ

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 мс.

+1

«Попробуйте код отладки» является _such_ общим и основным комментарием, но многие из этих пользователей PHP и Javascript этого не делают? Основные методы программирования, люди. –

+0

Хорошо;) но как подождать, пока обратный вызов будет запущен, чтобы я мог использовать его до того, как он затухает? –

+1

Вы просто помещаете свой код в обратный вызов. – Colandus

Смежные вопросы