jQuery中等待所有图像加载的更高效方法

3

我正在使用 .ready().load() 的混合来执行我想要的函数。

jQuery(document).ready(function($) {
    $("img").load(function() {
        // Function goes here
    });
});

正如您所看到的,这段代码等待DOM准备就绪,然后在每个<img>加载时执行代码。
如果我只有一个要加载的图像,那么这将是简单的。
但问题是 - 如果我有10张图片要加载怎么办?由于每张图片逐一加载,该函数将被调用10次,这不是实现我想要的目标的一种非常有效的方式。
因此,这里的问题是 - 是否有一种更有效的方法来等待所有图像加载完成,然后执行一次该函数

1
可能是重复的问题 https://dev59.com/_XRB5IYBdhLWcg3wtJGF - asymptoticFault
@asymptoticFault,我是要求执行一次,而不是像https://dev59.com/_XRB5IYBdhLWcg3wtJGF那样只是在加载时多次执行。 - Kyle Yeo
@Izkata 我会看一下第二个答案,看看是否是我需要的,谢谢。 - Kyle Yeo
链接的答案只有在所有图片加载完成后才会执行一次。 - asymptoticFault
显示剩余2条评论
3个回答

4
你可以这样做,避免函数多次运行。
jQuery(document).ready(function($) {
    var nrOfImages = $("img").length;
    $("img").load(function() {
        if(--nrOfImages == 0)
        {
            // Function goes here
        }
    });
});

1
jQuery(window).load(function() {
    alert("page finished loading now.");
});

jQuery(window).load(...) 会在页面上的所有内容都加载完成后触发。这与 jQuery(document).load(...) 不同,后者会在 DOM 加载完成后触发。我认为这能解决你的问题。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接