检查图像是否加载?

我正在寻找一种感觉,检查所有的图像是否加载之前,它们在图像滑块/旋转器中使用。 我正在考虑一个解决scheme,只有在加载主图像时才显示图像的button或缩略图,以防止用户点击未完整下载的图像。

.ready jQuery文档中的文本可能有助于区分loadready更清晰:

虽然JavaScript在呈现页面时提供了用于执行代码的加载事件,但直到所有资源(如图像)都已完全接收之后,才会触发此事件。 在大多数情况下,脚本可以在DOM层次被完全构build后立即运行。 传递给.ready()的处理程序保证在DOM准备就绪后执行,所以这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。

…和.load文档:

当它和所有子元素已经被完全加载时,加载事件被发送到元素。 这个事件可以发送到与URL相关的任何元素:图像,脚本,框架,iframe和窗口对象。

所以.load是你在找什么。 这个事件最棒的地方在于你可以将它附加到DOM的一个子集。 假设你有一个像这样的div的幻灯片图像:

 <div class="slideshow" style="display:none"> <img src="image1.png"/> <img src="image2.png"/> <img src="image3.png"/> <img src="image4.png"/> <img src="image5.png"/> </div> 

…然后,只要在.slideshow容器上使用.slideshow ,一旦容器中的所有图像都被加载,就会触发,而不pipe页面上的其他图像。

 $('.slideshow img').load(function(){ $('.slideshow').show().slideshowPlugin(); }); 

(我放了一个display:none一个例子,它会在加载的时候隐藏图像。)

更新(03.04.2013)
自jQuery版本1.8以来,此方法已被弃用

您可以触发每个$('img').load()事件,并只在您的负载触发后启用相关的链接/点击事件。 如果某些图片的加载时间较长,您可以依然允许快速的点击“可点击”。

 $('img').load(function() { // find the related link or click event and enable/add it }); 

为什么不使用$(window).load()事件而不是通常的$(document).ready()来创build滑块/旋转器? $(window).load()在执行之前等待页面完成加载,包括图像等资源。

请参阅: window.onload与body.onload与document.onready (也在堆栈溢出)。