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