Javascript 如何找到正确的答案?
我正在尝试在图像加载之前获取图像Javascript 如何找到正确的答案?,javascript,jquery,Javascript,Jquery,我正在尝试在图像加载之前获取图像高度和宽度,并通过js进行设置,我正在运行以下操作: $("img").each(function() { var mySizes = $(this); getImageSize($("img"), function(width, height){ mySizes.width(width).height(height); }); }); function get
高度
和宽度
,并通过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);
}
});
但是我对使用
这个感到困惑,并且相同的大小似乎适用于所有您的问题是您正在将$('img')
传递到getImageSize()
函数。这将获得文档中的所有图像。然后使用$img[0]
,以便将大小应用于所有图像中的第一个图像
相反,您希望将此传递给getImageSize()
:
这意味着您将只传入正在处理的当前图像each()
将为页面上的每个图像调用一次,您将一次处理一个图像
您也可以使用mySizes
而不是那里的this
,但由于您在其他函数中用$()
将其封装,因此mySizes
是多余的。我会舍弃这个变量。您的问题是将$('img')
传递给getImageSize()
函数。这将获得文档中的所有图像。然后使用$img[0]
,以便将大小应用于所有图像中的第一个图像
相反,您希望将此传递给getImageSize()
:
这意味着您将只传入正在处理的当前图像each()
将为页面上的每个图像调用一次,您将一次处理一个图像
您也可以使用mySizes
而不是那里的this
,但由于您在其他函数中用$()
将其封装,因此mySizes
是多余的。我会舍弃这个变量。getImageSize($(“img”)
您再次选择图像时使用:getImageSize(mySizes,
您甚至没有使用this
,因此在这种情况下传递给它的内容无关紧要。事实上,您甚至不需要调用
函数,只需调用回调(w,h)
@Occam'sRazor这个问题已经解决了,但我对你的方法很感兴趣,你能把它放到一个答案中吗?谢谢我的评论与问题无关,它不是一个答案,它只是对你得到的一些毫无意义的代码的评论,而问题与“纠正这个”无关正如标题所示。getImageSize($(“img”)
您再次选择图像时使用:getImageSize(mySizes,
您甚至没有使用this
,因此在本例中传递给它的内容无关紧要。事实上,您甚至不需要调用函数,只需调用回调(w,h)
@Occam'sRazor这个问题已经解决了,但我对你的方法很感兴趣,你能把它放到一个答案中吗?谢谢我的评论与问题无关,它不是一个答案,它只是对你得到的一些毫无意义的代码的评论,而问题与“纠正这个”无关如标题所示。好的,是的,实际上根据注释,我应该使用getImageSize(mySizes,
),但是是的,你是对的。如果这是答案,请打勾将其标记为正确答案。好的,是的,实际上根据注释,我应该使用getImageSize(mySizes,
但是是的,您是正确的。如果答案是正确的,请点击复选标记将其标记为正确答案。
$("img").each(function() {
var mySizes = $(this);
getImageSize(this, function(width, height) {
mySizes.width(width).height(height);
});
});