如何找到正确的?

时间:2018-02-22 21:05:28

标签: javascript jquery

我尝试在加载heightwidth图片之前通过js设置图片,我正在运行以下内容:

      $("img").each(function() {
        var mySizes = $(this);
        getImageSize($("img"), function(width, height){
          mySizes.width(width).height(height);
        });
      });
      function getImageSize(img, callback) {
        var $img = $(img);
        var wait = setInterval(function() {
          var w = $img[0].naturalWidth,
              h = $img[0].naturalHeight;
          if (w && h) {
              clearInterval(wait);
              callback.apply(this, [w, h]);
            }
        }, 30);
      }
    });

但我对使用this感到困惑,相同的尺寸似乎适用于所有

1 个答案:

答案 0 :(得分:4)

您的问题是您将$('img')传递到getImageSize()功能。这将在文档中获得所有图像。然后使用$img[0],这样您就可以将尺寸应用于所有图像中的第一张图像。

相反,您希望将this传递给getImageSize()

$("img").each(function() {
  var mySizes = $(this);
  getImageSize(this, function(width, height) {
    mySizes.width(width).height(height);
  });
});

这意味着您只会传入正在处理的当前图像。对于页面上的每个图片,each()将被调用一次,您将一次处理一个。

你也可以使用mySizes而不是this,但是自从你在其他函数的$()中将它包装起来,mySizes就是多余的。我会抛弃那个变量。