之前的图像大小在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].widthimgLoad[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 

会给你一个真正的价值