下面的代码中用each会得到结果
0
123
1
456
for中结果为
2
a[]为null或不是对象
为什么.....
求解释啊
[code="java"]
$(document).ready(function(){
var a=[{name:"123"},{name:"456"}];
for(i=0;i<a.length;i++){
var b=a[i].name;
$("#row"+i).click(function(){
alert(i);
alert(a[i].name);
});
}
});
$(document).ready(function(){
var a=[{name:"123"},{name:"456"}];
$.each(a,function(in){
var b=a[i].name;
$("#row"+i).click(function(){
alert(i);
alert(a[i].name);
alert(n.name);
});
});
1 |
2 |
[/code]
[code="js"]
$(document).ready(function(){
var a=[{name:"123"},{name:"456"}];
for(i=0;i<a.length;i++){
var b=a[i].name;
$("#row"+i).click((function(i){
return function() {
alert(i);
alert(a[i].name);
}
}) (i));
}
});
[/code]
改成这样就可以了
原来的时候当点击时去读取i的值,那时的i已经是2了 所以会出现你说的问题
了解下闭包 这个问题就解决了