javascript - 等到图像加载后再执行功能

标签 javascript jquery image

我正在尝试创建一个简单的投资组合页面。我有一个拇指列表和一个图像。当您点击缩略图时,图像会发生变化。

单击缩略图时,我想让图像淡出,等到图像加载完毕,然后淡入。我现在遇到的问题是有些图像非常大,所以它淡出,然后立即淡入,有时在图像仍在加载时。

我想避免使用 setTimeout,因为有时图像加载速度会比我设置的时间快或慢。

这是我的代码:

 $(function() {
     $('img#image').attr("src", $('ul#thumbs li:first img').attr("src"));

     $('ul#thumbs li img').click(function() {
         $('img#image').fadeOut(700);

         var src = $(this).attr("src");
         $('img#image').attr("src", src);

         $('img#image').fadeIn(700);
     });
 });

<img id="image" src="" alt="" />
<ul id="thumbs">
    <li><img src="/images/thumb1.png" /></li>
    <li><img src="/images/thumb2.png" /></li>
    <li><img src="/images/thumb3.png" /></li>
</ul>

最佳答案

你可以这样做:

$('img#image').attr("src", src).one('load',function() {
  $(this).fadeIn(700);
}).each(function() {
  if (this.complete) $(this).trigger('load');
});

如果图像被缓存,在某些浏览器中 .load() 不会触发,因此我们需要通过检查 .complete 和手动发射负载。 .one() 确保当时是缓存还是加载,load 处理程序只触发一次。

关于javascript - 等到图像加载后再执行功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2465815/

相关文章:

javascript - 如何在加载 iFrame 时显示加载消息?

javascript - 使用 AngularJS 动画一个 div 框

Jquery 替换淡入淡出/动画

php - 如何在子文件夹页面中显示图像(页面在 PHP 中)

javascript - 无法对原型(prototype)方法进行单元测试

javascript - 无法将 jQuery 按钮提交更改为下拉选择并提交

javascript - 无法从特定的下拉菜单中选择项目(文本)?

javascript - 延迟后,如何让div在滚动到后消失?

javascript - 尝试使用 javascript 下载网站上的所有图像

css - 如何设置 Xul 窗口背景图像?或者,如何在图像上添加标题?