JQuery回调问题

时间:2009-11-26 15:48:38

标签: javascript jquery scope

我正在尝试为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); } ) } );
}

每次运行这部分代码时,每次调用ajaxDiv时我都是5,因为它调用的是全局变量。我不确定我是否可以改变i的范围,或者是否有办法在更改函数中打印值。有什么想法吗?

提前谢谢!感恩节快乐!

安德鲁

1 个答案:

答案 0 :(得分:3)

回调函数都引用相同的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);
}