Вопрос обратного вызова JQuery - PullRequest
0 голосов
/ 26 ноября 2009

Я пытаюсь назначить другой номер для различных функций обратного вызова в jquery.

for (i=o;i<types.length;i++) {
     $('#ajax'+types[i]+'Div').html('Loading...').load('searchAjax.php','new=u',function () { $(this).find('select').change( function() { AjaxDiv(i); } ) } );
}

Каждый раз, когда я запускаю этот раздел кода, я равен 5 для каждого вызова ajaxDiv, потому что он вызывает глобальную переменную. Я не уверен, могу ли я изменить область действия i или есть способ напечатать значение в функции изменения. Есть идеи?

Заранее спасибо! С Днем Благодарения!

Andrew

1 Ответ

3 голосов
/ 26 ноября 2009

Все функции обратного вызова ссылаются на одну и ту же переменную i и выполняются после завершения цикла.

Вы должны захватить переменную i в цикле:

for (i=o;i<types.length;i++) {
  (function (i) {
     $('#ajax'+types[i]+'Div').html('Loading...').load('searchAjax.php','new=u',
     function () {
       $(this).find('select').change( function() { AjaxDiv(i); } )
     } );
  })(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...