将参数传递给循环中的jquery .load回调函数

时间:2014-03-27 19:31:10

标签: javascript jquery html ajax

我正在尝试加载一组图像,并为每个图像应用不同的样式作为加载。当我运行我的代码时,我只获得传入的最后一组样式以应用于所有图像。

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

1 个答案:

答案 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);
}