返回值:jQueryload(handler(eventObject))
为 JavaScript 的 "load" 事件绑定一个处理函数。
-
1.0 新增load(handler(eventObject))
handler(eventObject) (Function) 当事件被触发时,执行的函数。 -
1.4.3 新增load([eventData], handler(eventObject))
eventData (Object) 可选参数,将要传递给事件处理函数的数据映射。handler(eventObject) (Function) 每当事件触发时执行的函数。
该方法是 .bind('load', handler)
的快捷方式。
load
事件在一个元素及它的所有子元素都被加载完成后执行。该事件同样适用于任何可使用 URL 的元素,例如:images, scripts, frames, iframes, 和 window
对象。
例如,在一个页面上含有一个简单的图片:
<img src="book.png" alt="Book" id="book" />
该事件可绑定在这个图片上:
$('#book').load(function() { // Handler for .load() called. });
一旦图片被加载完,该事件就会被触发。
一般来说,没有必要去等待所有的图片被完全加载完。如果代码可以及早被执行,将它放在一个函数内传给 .ready()
方法,通常是最好的做法。
Ajax 模块同样也有一个叫
.load()
的方法。但哪一个会被执行,取决于传递的参数设置。
load
事件和图片对象一起使用时的注意事项开发者们在试图使用
.load()
事件来解决一个共通的挑战,那就是:当一张图片(或一组图片)被完全加载完之后,执行一个函数。以下是一些相关的注意事项:
- 该事件不会始终被触发
(要看图片是否被浏览器缓存),也不能可靠的跨浏览器。- 如果新设置的图片路径(即 src 属性)和之前的一样,那么在 WebKit 下,该事件无法被正确触发。
- 该事件无法正确的在 DOM 树中向上冒泡。
- 对于已经被浏览器缓存的图片,该事件不会被触发。
注意:
.live()
和.delegate()
方法无法检测在 iframe 中的load
事件。.load()
事件无法正确的向父文档冒泡。同时,在 Firefox, IE9 和 Chrome 中,event.target 也无法被设置,因为它需要事件委托。
示例:
当页面(包括所有图片)被完全加载完后,执行一个函数。
jQuery 代码:
$(window).load(function () {
// run code
});
示例:
在图片对象的 load 事件中,做如下处理:如果图片高度大于 100,就给它添加 bigImg 样式。
jQuery 代码:
$('img.userIcon').load(function(){
if($(this).height() > 100) {
$(this).addClass('bigImg');
}
});