在jQuery中等待所有图像加载的更有效方法
More efficient way to wait for all images to load in jQuery
我混合使用.ready()
和.load()
来执行我想要的函数。
jQuery(document).ready(function($) {
$("img").load(function() {
// Function goes here
});
});
正如您所看到的,这将等待DOM准备就绪,然后在每次<img>
加载时,它都会执行代码。
如果我只有一个图像加载,这将是简单的。
但问题是——如果我有10个图像要加载怎么办?由于每个图像都是一个接一个地加载的,该函数将被调用10次,而仅仅为了实现我想要的目标,这不是一种非常有效的方法。
因此,问题来了——是否有更有效的方法来等待所有图像加载,然后执行一次函数?
您可以这样做以避免函数多次运行。
jQuery(document).ready(function($) {
var nrOfImages = $("img").length;
$("img").load(function() {
if(--nrOfImages == 0)
{
// Function goes here
}
});
});
jQuery(window).load(function() {
alert("page finished loading now.");
});
加载页面上的所有内容后,将触发jQuery(window).load(...)
。这与加载DOM后触发的jQuery(document).load(...)
不同。我认为这将解决你的问题。
如果有人想知道,我的最终结果是:
(function($) {
$(window).load(function(){
// Function goes here
});
})(jQuery);
那是因为
jQuery(window).load(function($) {});
不是一个jQuery对象,正如这个问题中提到的:
在(window).load上调用jQuery并传递"无冲突"代码的变量
相关文章:
- 数组在手动写入时有效,但从文本文件加载时无效
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- Fine Uploader-未收到来自已加载iframe的有效消息
- 在层中加载多个图像,哪种方法更有效(资源方面)?-加载并编译PHP或将其堆叠
- jQuery加载在Dreamweaver上有效,但在浏览器中无效
- 我如何在Capybara中测试页面是否未重新加载(JavaScript onClick拦截有效)
- jQuery 帖子在加载时有效,但在点击时不起作用
- Javascript窗口/图像加载时间 - 这应该不起作用,但它确实有效
- 正确有效地实现后台加载
- 这是在网页中存储和使用从数据库加载的数据的最有效方法
- jQuery Click - 在页面 1st 加载时不起作用,但如果页面重新加载则有效
- 加载20MB +网页的最有效方法
- 是否应将此文件加载为有效的.js文件
- 砌体在移动浏览器(chrome)上不起作用,并且仅在Chrome桌面版本上有效,如果我重新加载(ctrl + f5)页面
- JQuery Mobile - 关闭对话框后加载错误的页面,并且Javascript并不总是有效
- 如何有效地加载1000 +谷歌地球标记
- Ajax 脚本仅在收到的 XML 足够大/需要足够长的时间来加载时才有效
- 有效的 Adobe Scene7 URL 生成“加载播放器时出错:找不到可播放的源”
- Facebook共享对话框打开空白弹出窗口 - 但在重新加载时有效
- 为什么第一次加载失败,但后续加载有效