jquery在src更改后获取图像宽度

Posted

技术标签:

【中文标题】jquery在src更改后获取图像宽度【英文标题】:jquery get image width after src change 【发布时间】:2011-12-28 23:24:18 【问题描述】:

我的 jquery 代码:

 img[i]='img-src';
 $("#popimage1").attr("src",img[i]);
 alert($("#popimage1").width());      //doesn't give the width of the current image, but it gives for the previous, and for first null

我的html代码:

 <img src="" id="popimage1"/>

所以概念是我使用 jquery 为每个 i 加载不同的图像 src,然后我对宽度和高度进行一些计算。问题是我使用前一个计数器 i 获取图像的值。我做了一个临时解决方案,把

  $("#popimage1").hide();
  setTimeout(alert($("#popimage1").width(),2000);
  $("#popimage1").show();

但它并不总是有效,并导致不必要的超时。 除了 alert 之外,还有另一个使用 img 宽度和高度的函数,为了方便起见,我只是写了 alert。任何帮助表示赞赏!

【问题讨论】:

Get real image width and height with javascript in Safari/Chrome? 的可能重复项 您是否尝试过使用那里的答案?它应该服务于您的目的。 嗯,问题有点不同,但第一个答案解决了我的问题,现在我又看到了..但我第一次没有意识到,无论如何我认为不锁定会很好这个话题,因为问题有点不同..谢谢大家! 【参考方案1】:

您必须先等待图片加载。

试试这个。

img[i] = "img-src";
$("#popimage1").attr("src", img[i]).load(function() 
  alert($("#popimage1").width());
);

【讨论】:

【参考方案2】:

修改图片源是异步的,因此不会立即返回。

尝试处理load()

$("#popimage1").load(function() 
  alert($(this).width());
);

【讨论】:

【参考方案3】:

请注意,.load 函数已被弃用 since jQuery 1.8。 使用 .on 函数和对应的事件名称:

$("#popimage1").on('load', function() 
    alert($(this).width());
)

参考:https://***.com/a/40252711/2893053

【讨论】:

以上是关于jquery在src更改后获取图像宽度的主要内容,如果未能解决你的问题,请参考以下文章

jquery中的图像本机宽度

在jQuery中获取图像的原始宽度和高度

使用 jquery 更改动态加载图像的 src

在js中更改img的来源并获得0的宽度?

使用css和jquery调整图像大小后获取图像高度?

以循环方式使用jquery更改多个图像src