4

我想在实际显示它们之前将每个图像加载到 div 中。我有类似的东西:

<div>

<img src="1.jpg" />
<img src="1.jpg" />
<img src="1.jpg" />
<img src="1.jpg" />
<img src="1.jpg" />
<img src="1.jpg" />

</div>

起初我尝试做这样的事情:

$('div img').load(function() {

$('div img').show();


});

或这个:

$('div').find('img').load(function() {

$('div img').show();

});

不幸的是,这不起作用,因为一旦浏览器加载了一个图像,它就会触发事件。关于如何首先加载所有内容的任何想法?谢谢!

4

5 回答 5

7

您可以跟踪已加载的图像数量:

var $images = $('div img'),
    preloaded = 0,
    total = $images.length;
$images.load(function() {
    if (++preloaded === total) {
        // Done!
    }
});
于 2012-10-10T01:58:43.363 回答
1

不幸的是,以跨浏览器兼容的方式做到这一点并不容易。但幸运的是,有 2 个插件可以让它变得轻松。

查看waitforimagesimagesloaded

然后你可以这样做:

$('div').waitForImages(function(){
  $(this).find('img').show();
});
于 2012-10-10T01:57:14.517 回答
0

试试这个 http://chipsandtv.com/articles/jquery-image-preload

于 2012-10-10T01:57:00.677 回答
0

这对我有用:

$(document).ready(function () {
    $('#div with images').hide();
});

$(window).load(function () {
    $('#div with images').show();
});
于 2014-06-16T23:44:16.183 回答
0

首先,现代浏览器可以同时执行 6 个请求 => 不要在加载时加载这么多图像。如果你有很多图片,你可以在后面设置图片 'src=""' 或不设置 "src" 属性,并在第一张图片加载后设置

其次,您可以使用检查“图像已加载”

 document.getElementById('#imageId').complete == !0

您可以检查最大尺寸的图像或 DOM 中的最后一个图像,以确保其他图像已加载。

希望它会帮助你。

于 2014-01-20T14:40:31.293 回答