.ready( handler )返回值: jQuery
描述: 指定一个函数,在 DOM 完全加载后执行。
-
添加版本: 1.0.ready( handler )
-
handler类型: 函数()DOM 准备就绪后要执行的函数。
-
.ready()
方法提供了一种方法,可以在页面文档对象模型 (DOM) 变得安全可操作时立即运行 JavaScript 代码。这通常是执行在用户查看或与页面交互之前需要的任务的最佳时机,例如添加事件处理程序和初始化插件。当通过对该方法的连续调用添加多个函数时,它们会在 DOM 准备就绪时按添加顺序运行。从 jQuery 3.0 开始,jQuery 确保一个处理程序中发生的异常不会阻止随后添加的处理程序执行。
大多数浏览器 提供类似的功能,以 DOMContentLoaded
事件的形式。但是,jQuery 的 .ready()
方法在重要且有用的方面有所不同:如果 DOM 变得准备就绪,并且浏览器在代码调用 .ready( handler )
之前触发了 DOMContentLoaded
,则函数 handler
仍将执行。相反,在事件触发后添加的 DOMContentLoaded
事件监听器永远不会执行。
浏览器还提供 window
对象上的 load
事件。当此事件触发时,它表示页面上的所有资产都已加载,包括图像。可以使用 $( window ).on( "load", handler )
在 jQuery 中监视此事件。在代码依赖于加载的资产的情况下(例如,如果需要图像的尺寸),代码应放置在 load
事件的处理程序中。
请注意,虽然 DOM 始终在页面完全加载之前变得准备就绪,但通常不安全在 .ready()
处理程序中执行的代码中附加 load
事件监听器。例如,可以使用 $.getScript()
等方法在页面加载很久之后动态加载脚本。虽然由 .ready()
添加的处理程序始终会在动态加载的脚本中执行,但 window
的 load
事件已经发生,并且这些监听器将永远不会运行。
jQuery 提供了几种方法来附加一个在 DOM 准备好时运行的函数。以下所有语法都是等效的
$( handler )
$( document ).ready( handler )
$( "document" ).ready( handler )
$( "img" ).ready( handler )
$().ready( handler )
从 jQuery 3.0 开始,只推荐使用第一种语法;其他语法仍然有效,但已弃用。这是因为选择对 .ready()
方法的行为没有影响,这效率低下,并且会导致对方法行为的错误假设。例如,第三种语法使用 "document"
,它什么也不选择。第四种语法等待文档准备好,但错误地暗示它等待图像准备好。
还有 $(document).on( "ready", handler )
,从 jQuery 1.8 开始弃用,并在 jQuery 3.0 中删除。请注意,如果 DOM 在此事件附加之前准备好,则不会执行处理程序。
.ready()
方法通常与匿名函数一起使用
1
2
3
|
|
这等效于推荐的调用方式
1
2
3
|
|
jQuery 对象的别名
当使用 $.noConflict()
来避免命名空间冲突时,$
快捷方式将不再可用。但是,.ready()
处理程序会传递对调用该方法的 jQuery
对象的引用。这允许处理程序使用 jQuery 对象,例如 $
,而无需知道其别名。
1
2
3
4
|
|
示例
在 DOM 加载时显示一条消息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
|