通过JavaScript(而不是指直接在HTML中添加处理程序属性)注册事件处理程序的传统机制是,把一个函数制定给DOM元素的对应属性。例如,假设我们已经定义了如下函数:
function doStuff(){
//执行某种任务......
}
那么,我们既可以在HTML标记中制定该函数:
<body onload="doStuff();">
也可以在JavaScript代码中指定该函数:
window.onload=doStuff;
这两种方式都会在页面加载完成后执行这个函数。但第2种方式的优点在于,它能使行为更清晰地从标记中分离出来。
在只有一个函数的情况下,这样做没有什么问题。但是,假设我们又定义了第二个函数:
function doOtherStuff(){
//执行另外一种任务......
}
我们也可以将它指定为基于页面的加载来运行:
window.onload=doOtherStuff;
然而,这次指定的函数会取代刚才指定的第一函数。因为.onload属性一次只能保存对一个函数的引用,所以不能在现在的行为基础上再增加新行为。
通过$(document).ready()机制能够很好地解决这个问题。每次调用这个方法都会向内部的行为队列中添加一个新函数,当页面加载完成后,所有函数都会被执行。而且,这些函数会按照注册它们的顺序依次执行。