问题描述
|
在将图像放入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
});
解决方法
使用
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);
});
工作演示: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
会给你一个真实的价值