首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使加载到jquery上的图像在单个图像中淡入淡出

使加载到jquery上的图像在单个图像中淡入淡出
EN

Stack Overflow用户
提问于 2013-09-03 10:46:59
回答 3查看 973关注 0票数 1

这是示例html结构:

代码语言:javascript
运行
复制
<div class=container>
    <div class=green></div>
    <div class=green></div>
    <div class=green></div>
    <div class=green></div>
</div>

下面的代码是有效的:

代码语言:javascript
运行
复制
 $('.container').imagesLoaded(function(){
    $('.green').find('img').fadeIn(444);
});

唯一的缺点是,它等待所有图像加载,然后同时淡入。如何使每个图像在完成加载后立即加载,而不是等待所有图像加载。

我已经试过了,但它不起作用:

代码语言:javascript
运行
复制
    $('.green').imagesLoaded(function(){                    
        $(this).find('img').fadeIn(444);
    });
EN

回答 3

Stack Overflow用户

发布于 2015-01-29 20:54:23

我也遇到过同样的问题,我发现您需要将imagesLoaded插件绑定到.each()方法中的.green,如下所示:

代码语言:javascript
运行
复制
$('.container').find('.green').each(function () {
    var _this = $(this);

    _this.imagesLoaded(function () {
        _this.find('img').fadeIn(444);
    });
});
票数 1
EN

Stack Overflow用户

发布于 2013-09-03 10:56:39

是的,这通常是一个相当基本的问题:一些图像在您为它们分配一个load事件处理程序之前就完成了加载。当图像被缓存时,这种情况尤其可能发生。

不幸的是,如果图像是HTML格式的,那么唯一可靠的方法就是包含一个(极其丑陋的) inline onload属性:

代码语言:javascript
运行
复制
<img src="..." alt="..." onload="$(this).fadeIn();">
票数 0
EN

Stack Overflow用户

发布于 2013-09-03 11:15:32

尝试如下所示::

代码语言:javascript
运行
复制
jQuery.fn.eachLoaded = function(fn){
   return this.each(function(){
     // if already loaded call callback
     if (this.complete || this.readyState == 'complete'){
       fn.call(this);
     } else { // otherwise bind onload event
       $(this).load(fn);
     }
   });
}
$('.green img').eachLoaded(function(){
  $(this).fadeIn(444)
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18583346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档