问题代码:
for(var i=0;i<len;i++){
one=some[i];
$(one).css('position','relative');
$(one).animate({opacity:'0.0',right:width},function(){
console.log(i);
});
}
上面代码输出的i始终等于len...这是因为闭包中的i在回调函数中始终都是指向同一个地址,所以得到的值都是最后变更的值
解决方案1
for(var i=0;i<len;i++){
one=some[i];
$(one).animate({opacity:'0.0',right:width},sleep,function(){
func(i);
});
}
function func(i){
console.log(i);
}
把变量当作参数传进函数里,会被自动复制一份,所以问题能解决