0

嗨,我的第一个插件有问题:-)

我在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();                          
      });
  });

}
4

1 回答 1

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));
    
于 2013-03-18T21:16:25.093 回答