使用jquery获取图像宽度和高度

时间:2012-03-20 13:16:02

标签: jquery image height width

我有一个非常简单的代码,烦人的工作和我的生活我不明白为什么它现在失败了:

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);
});

3 个答案:

答案 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');

}