我尝试在加载height
和width
图片之前通过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
感到困惑,相同的尺寸似乎适用于所有
答案 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
就是多余的。我会抛弃那个变量。