返回值:jQueryready(handler)
在 DOM 被完全加载完时,指定将要被执行的函数。
-
1.0 新增ready(handler)
handler (Function) 指定在 DOM 被完全加载完时将要被执行的函数。
虽然 JavaScript 提供了 load 事件,当页面被重绘时可以执行想要的操作,但是该事件直到所有的资源(例如,图片)被加载完后,才会被触发。大多数情况下,当 DOM 层次结构被完全构建之后,脚本就可以执行。.ready() 保证在 DOM 准备就绪之后,再执行传递给它的方法。因此,这里是进行所有其它事件绑定及运行其它 jQuery 代码的最佳地方。当使用的脚本依赖 CSS 属性值时,需要特别注意,要保证外部的样式或内嵌的样式被加载完后,再调用脚本。
如果执行的代码需要在元素被加载之后才能使用时,(例如,取得图片的大小需要在图片被加载完后才能知道),就需要将这样的代码放到 load 事件中。
通常情况下,
.ready()方法和<body onload="">是不兼容的。如果必须要使用load时,既不要使用.ready()方法,也不要使用 jQuery 的.load()方法向 window 或一些指定的元素(例如,图片)绑定load事件。
下面三种语法是等价的:
-
$(document).ready(handler) -
$().ready(handler)(不建议使用这种方法) -
$(handler)
还有一种用法是 $(document).bind("ready", handler),该方法在从 jQuery 1.8 开始不再建议使用。这种用法的行为和 ready 方法类似,只有一点不同:如果 .ready() 方法已经被执行,再试图进行 .bind("ready") 的话,此时通过 .bind("ready") 绑定的函数是不会被立刻执行的,而是在使用上述三种方法之一进行绑定的函数执行完之后,才会执行通过这种方法绑定的 ready 事件处理。(换句话说,如果同时使用 .ready() 方法和 $(document).bind("ready", handler) 的话,那么始终会先执行 .ready(),再执行通过 bind 绑定的事件。)
由于 .ready() 方法只能被匹配当前文档的 jQuery 对象调用,因此选择符可能被省略。
传递给 .ready() 的函数通常是匿名函数:
$(document).ready(function() {
// Handler for .ready() called.
});
上面的代码和下面的代码是等价的:
$(function() {
// Handler for .ready() called.
});
如果 .ready() 在 DOM 被初始化后被调用,那么会立即调用传递给该方法的函数。
为 jQuery 名字空间指定别名
当使用其它的 JavaScript 库时,我们希望通过调用
$.noConflict()
来避免名字空间冲突。当调用
$.noConflict()
后,$ 符号将不再有效,在原先使用 $ 的地方,现在我们必须使用 jQuery 来代替。然而,传递给 .ready() 方法的函数可以带上一个参数,代表全局的 jQuery 对象。这意味着我们可以重命名 .ready() 事件的上下文对象,而不影响其它代码:
jQuery(document).ready(function($) {
// Code using $ as usual goes here.
});
示例:
当 DOM 加载完成后,显示一条信息。
<!DOCTYPE html>
<html>
<head>
<style>p { color:red; }</style>
<script src="jquery.min.js"></script>
</head>
<body>
<p>Not loaded yet.</p>
<script>
$(document).ready(function () {
$("p").text("The DOM is now loaded and can be manipulated.");
});
</script>
</body>
</html>