.ready()

.ready( handler ) 返回: jQuery

描述: 当DOM完全加载完成时,指定一个函数来执行。

  • version added: 1.0.ready( handler )

    handler当DOM完全加载完成时,执行一个函数。

虽然JavaScript提供了load事件,当页面执呈现时用来执行这个事件,直到所有的东西,如图像已被完全接收前,此事件不会被触发。在大多数情况下,只要DOM结构已完全加载脚本就可以运行。传递给处理函数给.ready()能保证DOM准备好后就执行这个函数,所以附加所有其他的事件处理程序和运行其它jQuery代码,这个方法通常是最好的地方。当使用脚本依赖CSS样式属性值的时候,重要的是要引用外部样式或引用样式元素防止在脚本之前。

如遇到有代码依赖于加载元素(例如,如果一个图像的尺寸为必须项),代码应该被放置在该处理函数中,用来替换load 事件。

.ready()方法通常是不符合<body onload="">属性。如果load必须使用,要么不使用.ready(),要么使用jQuery的.load()方法来附加load事件处理函数到window或更多的具体对象,比如图片。

以下三个语法全部是等价的:

  • $(document).ready(handler)
  • $().ready(handler) (this is not recommended)
  • $(handler)

还有$(document).bind("ready", handler)。此行为类似于 ready 方法,但有一个例外:如果ready 事件已准备触发,你再尝试用.bind("ready")绑定处理函数将不会被执行。

.ready()方法只能在一个jQuery对象匹配的当前文档上调用。所以选择可以省略。

.ready()方法通常用于一个匿名函数:

$(document).ready(function() {
  // Handler for .ready() called.
});

如果.ready()在DOM被初始化后被调用,新的处理函数通过将立即执行。

Aliasing the jQuery Namespace

当使用其他JavaScript库时,我们不妨调用$.noConflict()以避免命名空间中的混淆。当这个函数被调用,$快捷方式将不再可用,迫使我们每次将写$的时候写jQuery代替 。然而,处理函数传递给.ready()方法可以带一个参数,这个参数就是全局的jQuery对象。这意味着我们可以重新命名上下文对象内的.ready()处理函数,而不影响其他代码:

jQuery(document).ready(function($) {
  // Code using $ as usual goes here.
});

Example:

显示当DOM加载的信息。

<!DOCTYPE html>
<html>
<head>
  <style>p { color:red; }</style>
  <script src="http://code.jquery.com/jquery-latest.min.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>

Demo:

jQuery 1.6 API 中文版脚本之家整理、修订 (2011年6月)