jQuery for和load等待图像

时间:2013-03-18 21:06:08

标签: jquery plugins load

您好我的第一个插件有问题: - )

我在for循环中设置了一些变量 问题是,当我尝试删除图像时,我最终尝试删除3次#img-3 比如,当变量已经改变值

时它会被执行
for (i=1; i<=3; i++) {

  var insertImg = arrImgs[i];
  var deleteImg = '#img-' + i;

  $('<img src="'+ insertImg +'">').hide().appendTo('#mydiv').load(function(){
      $(this).show(0, function() {
           deleteImg.remove();                          
      });
  });

}

1 个答案:

答案 0 :(得分:0)

假设deleteImg.remove();是一个拼写错误,并且您实际上打算发布$(deleteImg).remove(),那么这里有一些问题。

  1. 您没有为要插入的图像元素添加ID。尝试使用:

    $('<img src="'+ insertImg +'" id="' + i + '" />')
    
  2. 回调正在关闭deleteImg变量,并且只会在调用它们时使用存储在其中的值。看到它们是响应事件(加载事件)而调用的,这将在循环完成后,此时deleteImg的值为“#img-3”

    此问题的一个解决方案是使用IIFE从deleteImg传递值而不关闭变量。这看起来像是:

    .load((function(d){
        return function(){
            $(this).show(0, function() {
                 d.remove();                          
            });
        }
    })(deleteImg));