下面 3 种都是 $.ready 的语法
|
|
在jQuery 3.0 中,只建议使用第一种语法,其他语法仍然能正常工作,但已被标记为弃用。这是因为,这些选择器跟.ready()方法的行为没有任何关系,这是低效的,并可能导致对该方法行为不正确的假设。
那么,为什么jquery要加一个这样的方法呢,直接用 winfdow.onload = function(){}; 来操作页面加载后再执行不好么。这就要看一下DOM文档加载的步骤:123456(1) 解析HTML结构。(2) 加载外部脚本和样式表文件。(3) 解析并执行脚本代码。(4) 构造HTML DOM模型。 //ready 越早处理 DOM ,对用户的体验越好(5) 加载图片等外部文件。(6) 页面加载完毕。 //window.onload
从上面 DOM 文档加载的步骤可知,用 $.ready 先在DOM结构树加载完之后开始做事了,不用等其他资源加载完毕。有利于用户体验。
源码:
|
|
|
|
上面是对$(document).ready()方法的解释,对应的,juqery 还有一个静态的方法 $.ready();那这个方法又可以做什么呢?
从jQuery 3.0开始, 可以通过jQuery.when 或者原生的 Promise.resolve() 使用这个对象。你的代码不应该假设这个对象是否是一个 jQuery.Deferred,原生的 Promise ,或者其他类型的promise对象。
使用 jQuery.when 监听 document ready
|
|
典型用法涉及另一个 promise ,使用 jQuery.when.
|
|
源码:
|
|
2017-11-24