.ready()
.ready( handler )
描述:指定一个函数,当DOM完全加入的时候执行它。
虽然JavaScript提供了load事件,用于在网页呈现完成之后执行代码,但是会直到网页上所有的资源,比如说图像,都已经完全收到之后,才会触发这个事件。在大多数情况下,这个脚本会在DOM层级结构完全构造完之后就会运行。传递给.ready()方法的处理函数,能保证在DOM就绪立后执行,因此这通常是附加所有其它事件处理函数、运行其它JavaScript代码的最合适的地方。如果运行脚本依赖于CSS样式属性值,则在引用脚本之前引用外部样式表文件或者嵌入<style>元素很重要。
万一代码依赖于载入的资源(举个例子,如果需要用一个图像的维度),则代码必须改放在load事件的处理函数中。
.ready()方法通常不兼容<body onload="">。如果必须使用load事件,要么不要使用.ready()方法,要么向window对象使用jQuery的.load()方法来附加load事件处理函数,或者向更多特定的项目,比如说图像,附加load事件处理函数。
下面三种句法是等同的:
$( document ).ready( handler )$().ready( handler )(this is not recommended)$( handler )
还有一个$(document).on( "ready", handler ),自从jQuery 1.8版就被建议弃用了。这种行为近似于.ready()方法,但是如果ready事件已经被引发,而且你试图用.on( "ready" )来绑定处理函数,处理函数将不会被执行。以这种方式绑定的ready处理函数,会在上面三种方法绑定的函数执行完之后才执行它。
.ready()只能在匹配当前document的jQuery对象上调用,所以选择器可以省略掉。
.ready()方法通常与匿名函数协作。
$( document ).ready(function() {
// Handler for .ready() called.
});
它等同于调用:
$(function() {
// Handler for .ready() called.
});
如果.ready()在DOM已经初始化完成后调用,新传入的处理函数将立即执行。
给jQuery命名空间取别名。
如果还使用了别的JavaScript库,我们可以调用$.noConflict()以避免命名空间冲突。调用了这个函数,$这个简写就不再可用了,强迫我们把通常可以写成$的符号书写成jQuery。然而,传递给.ready()方法的处理函数可以取用一个参数,它会传入全局jQuery对象。这意味着我们可以在.ready()处理函数的上下文内重命名这个对象,而不影响别的代码:
jQuery( document ).ready(function( $ ) {
// Code using $ as usual goes here.
});
示例
当DOM载入后,显示一条消息。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ready demo</title>
<style>
p {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<script>
$( document ).ready(function() {
$( "p" ).text( "The DOM is now loaded and can be manipulated." );
});
</script>
</head>
<body>
<p>Not loaded yet.</p>
</body>
</html>
演示结果