.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>
演示结果