2014-03-27 211 views
1

我想加载一组图像,并将不同的样式应用于每一个作为加载。当我运行我的代码时,我只获取传入的最后一组样式适用于所有图像。将参数传递给循环中的jquery .load回调函数

对于一组图像ids $ 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的值。

回答

1

你可以使用一个闭合来获得在每次迭代

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); 
} 
+0

真棒得益于正确的值,与其说这是正是我需要的。 –