2 dlywcx dlywcx 于 2014.08.26 12:31 提问

jquery动态绑定事件问题

$(function(){
var index=[0,1,2,3];
for(var i in index){
$($("input[type='button']")[i]).click(function(){alert(i);});
}
});
......




为什么alert出来的都是3?

1个回答

wangfupeng1988
wangfupeng1988   2014.08.26 16:16

这是个典型的多个作用域引用同一个闭包的问题,这时闭包的数据是共享的。解决方法:
$(function(){
var index=[0,1,2,3];
for(var i in index){
(function(lockedIndex) {
$($("input[type='button']")[i]).click(function(){alert(lockedIndex);});
})(i);
}
});

希望对你有帮助!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!