在JS中,你写一个for循环的时候,内部的循环变量I其实是会保存在它运行的函数或类内的,所以你会发现你给元素批量绑定事件的时候,出现i=最后一个循环变量的值,这就很坑爹啊,解决的方案有2钟, 思路就是:把这个循环变量保存起来,不要让它的作用域在整个函数,而是在循环体内 1.使用闭包(如果你不懂闭包,请打开百度:www.baidu.com) 2.使用with关键字,with语法是with( obj ) { //使得可以在此直接访问obj的属性,而不用加obj.XXX } 代码示例: 复制代码 代码如下: Untitled Page <BR>$(document).ready(function (){ <BR>function Ev(i){ <BR>this.index = i; <BR>this.click = function (){ <BR>alert(this.index ); <BR>} <BR>} <BR>for(var k=1; k<4; k++){ <BR>//闭包函数1 <BR>// (function(x){ <BR>// $("#div" + x).click(function(){ <BR>// f(x); <BR>// }); <BR>// }(k)); <BR>//使用with关键字 <BR>with ({i: k}){ <BR>$("#div" + i).click(function(){ <BR>f(i); <BR>}); <BR>} <BR>} <BR>var f = function (m){ <BR>alert(m); <BR>} <BR>}); <BR> 1 2 3