2011-09-09 46 views

回答

3

有一个如何在jQuery doc page for .load()上执行此操作的示例。

HTML:

<img src="book.png" alt="Book" id="book" /> 

的Javascript:

$('#book').load(function() { 
    // Handler for .load() called. 
}); 

而且,还有一堆需要注意的地方需要注意的是jQuery的网页上列出了。

使用图像时,如果要确保装载处理程序被调用,则必须先设置装载处理程序,然后才能装载图像。如果您使用代码构建图像,这意味着您必须在设置.src属性之前设置装入处理程序。这是因为,在某些浏览器中,如果映像位于内存/磁盘缓存中,则在分配.src时会立即加载,如果随后设置了​​处理程序,则会太晚(图像已经加载)以及​​处理程序将永远不会被调用。

我不知道如何保证一个基于jQuery的.load()总是被调用,因为你的页面中的图像是HTML,因为你不能分配事件处理程序直到对象存在,但是一旦对象它退出,它可能已经被加载。您可以在实际的HTML中使用onload = xxx的非jQuery设置,尽管这是一种较旧的编码风格。当然,你总是可以挂钩window.onload,以知道何时加载了所有页面图像(和其他资源)。

+0

请@ jfriend00阅读部分:使用图片时加载事件的注意事项 – rkmax

+0

我已阅读注意事项。我不知道为什么他们听起来很悲观,除非jQuery的实现是有问题的。我已经在代码中使用了load事件(非jQuery,基于plain-javascript的),代码可以在数千个站点上可靠地运行(在运行幻灯片的代码中,所以代码知道下一个图像何时加载并准备好显示)和IE6以上的各种浏览器。我从来没有遇到过问题。您必须确保事件尚未解除,但有办法检测/阻止该事件。 – jfriend00

0

jQuery有一个load方法,而不是onload。而你的代码应该是:

$ ('img').load(function() { 
    alert('image loaded ' + this.src); 
}) 
相关问题