如何在将图像放入DOM之前获取图像大小?
var imgLoad = $("<img />");
$(imgLoad).attr("src", ImageGallery.ImagesList[index] + "?" + new Date().getTime());
$(imgLoad).unbind("load");
$(imgLoad).bind("load", function () {
// Get image sizes
alert(imgLoad.width()); // RETURN 0
});
答案 0 :(得分:24)
改为使用imgLoad[0].width
和imgLoad[0].height
,或使用this
代替imgLoad
:
var imgLoad = $("<img />");
imgLoad.attr("src", ImageGallery.ImagesList[index] + "?" + new Date().getTime());
imgLoad.unbind("load");
imgLoad.bind("load", function () {
// Get image sizes
alert(this.width);
});
这是有效的,因为浏览器在下载图像时会填充元素的height
/ width
属性。另一方面,jQuery获取元素的实际可见尺寸 - 当元素未显示时,它总是为0。
请注意,您不需要将imgLoad
与$()
一起包装,因为它已经是jQuery对象。
答案 1 :(得分:2)
创建新图像时,.width将为您提供未渲染图像的原生尺寸,而.width()是一种jQuery方法,在图像插入DOM之前不会返回值。
在普通的旧JS中;
var i = new Image()
i.src = 'blah.gif'
var h = i.height
var w = i.width
会给你一个真正的价值