检查图像是否加载?
我正在寻找一种感觉,检查所有的图像是否加载之前,它们在图像滑块/旋转器中使用。 我正在考虑一个解决scheme,只有在加载主图像时才显示图像的button或缩略图,以防止用户点击未完整下载的图像。
.ready jQuery文档中的文本可能有助于区分load
和ready
更清晰:
虽然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 (也在堆栈溢出)。