我有一个非常简单的代码,烦人的工作和我的生活我不明白为什么它现在失败了:
function imageSize(img){
var theImage = new Image();
theImage.src = img.attr('src');
var imgwidth = theImage.width;
var imgheight = theImage.height;
alert(imgwidth+'-'+imgheight);
}
传递的“img”变量是img对象,从:
获得jQuery('img')
.each(function(){
var imgsrc = jQuery(this);
imageSize(imgsrc);
});
答案 0 :(得分:2)
好的 - 当我在jsFiddle上测试时,我给出的上一个答案是无效的 - 我创建了这个,它可以做你想要的吗?你需要拥有“new Image()”部分吗? http://jsfiddle.net/R89Qr/3/ - 给图像一些硬编码的尺寸......
我稍微更改了您的代码,以便它执行此操作:
function imageSize(img){
var theImage = new Image(); // ignoring this part when checking the image width/height
theImage.src = img.attr('src');
var imgwidth = $(img).width();
var imgheight = $(img).height();
alert(imgwidth+'-'+imgheight);
}
$('img').each(function(){
var imgsrc = jQuery(this);
imageSize(imgsrc);
});
答案 1 :(得分:2)
图片可能尚未加载。所以,尝试(未经测试):
function imageSize(img){
var theImage = new Image();
$(theImage).load(function() {
var imgwidth = this.width;
var imgheight = this.height;
alert(imgwidth+'-'+imgheight);
});
theImage.src = img.attr('src');
}
答案 2 :(得分:1)
你必须等待,直到你的图像被加载,然后访问它的大小:
function imageSize(img){
var theImage = new Image();
theImage.onload = function(){
var imgwidth = theImage.width;
var imgheight = theImage.height;
alert(imgwidth+'-'+imgheight);
}
theImage.src = img.attr('src');
}