我正在尝试加载一组图像,并为每个图像应用不同的样式作为加载。当我运行我的代码时,我只获得传入的最后一组样式以应用于所有图像。
对于一组图像ID,$ foo将该图像加载到自己的框中,然后应用高度。
for ( var i = 0; i < $foo.length; i = i + 1 ) {
$bar = i;
$('.box'+[i]).load('/getimage/'+$foo[i]', function(){style($(this), $bar);}
}
function style(img, $bar){
img.css('height', $bar);
}
我使用样式函数格式化的每个图像只能设置为$ bar的最后一个值的高度。
我想将高度设置为加载图像时$ bar的值。
答案 0 :(得分:3)
您可以使用闭包在每次迭代中获取正确的值
for ( var i = 0; i < $foo.length; i = i + 1 ) {
$bar = i;
// closure to get correct value for i
(function(index) {
$('.box'+[index]).load('/getimage/'+$foo[index], function() {
style($(this), index);
});
})(i);
}
function style(img, $bar){
img.css('height', $bar);
}