jQuery.load();并不总是用图像触发
jQuery.load(); not always firing with images
我有一个脚本,它在加载图像时会在图像中淡入淡出,以防止丑陋的加载动画,它使用 $(elem).load();
函数。
我的问题是,有时页面上会有几个图像没有淡入。这应该是因为尚未触发加载事件。我已经检查了控制台是否有错误,但找不到任何东西...它并不总是发生,但它偶尔会发生。
脚本:
// Function to be applied to any element
jQuery.fn.preFade = function( speed, callback ) {
this.load(function(){
$(this).fadeIn(speed, callback);
});
};
// The .prefade class has display: none; applied to it in my CSS
$(document).ready(function(){
$('.prefade').preFade(1000);
});
最让我难倒的是,尽管没有触发加载事件,但实际上已加载图像。我知道这一点的原因是,当我检查元素并将其更改为display: block;
时,display: none;
图像就会出现。
我有一个暗示,也许我在调用事件的顺序上缺少一些东西......
我在注释中链接到一个解决方案,这就是它适合我的代码的方式。
this.one('load', function(){
$(this).fadeIn(speed, callback);
}).each(function(){
if (this.complete) { $(this).load(); }
});
从简单$.load()
函数(使用 $.on('load')
)更改为 $.one('load')
函数会将事件限制为仅触发一次。 然后,if (this.complete)
检查它是否在事件绑定到元素之前就已加载,如果有,它将触发 load 事件。
链接到解决方案
使用 $(window).load 事件。仅当加载所有图像时,才会进行三重处理
$(window).load(function(){
$('.prefade').preFade(1000);
});
相关文章:
- jQuery.load();并不总是用图像触发
- iFrame.load事件未等待预加载图像完成
- 如何使用相同大小的Lazy-Load图像修复图像环绕大小
- JavaScript:从javascript加载图像,然后等待该图像的“load”事件
- 仅使用 jQuery .load() 接收图像的字节码
- .load() 不会为未缓存的图像触发 - jquery
- 如何使用 js 在 load() 过程中显示加载图像
- 在图像上使用 JQuery 的 .load() 的正确方法是什么?
- ajax .load 函数删除整个页面,只加载单个图像
- 刷新页面时使用chrome缓存的图像.load()工作不正常
- $(window).load在Firefox中不显示图像
- 如果图像已经加载,则jQuery.load()回退
- 尝试使用jQuery .load方法添加图像
- (Jquery)从load[ed]() HTML元素样式中获取背景图像路径
- 从用户定义的url / input加载自定义图像的事件- load()不起作用
- 在图像上使用load()方法时未显示警报
- 确定何时jQuery load()完成了多个图像的加载
- onLoad和.load()函数中的图像宽度总是0
- 在.load()上获取图像宽度并不能在除firefox以外的所有浏览器上工作
- $.ajax.load()在加载图像之前触发回调