我们最近遇到了一个错误,在加载DOM之前,jquery document.ready似乎已经触发了。事实证明,在调用
的第一个项目之后存在一些错误的代码 $.ready(function(){});
这句话似乎正在触发document.ready event。
以下是代码示例:
<script>
$(function(){
alert("loaded");
});
</script>
<ul>
<li> hello </li>
<script>
$.ready(function(){
});
</script>
<li> worldddd</li>
</ul>
这是一个jsfiddle,你可以看到在执行警报时dom没有完全加载。
我的问题是为什么$ .ready()会激活dom ready事件?这是一个jquery“功能”,它允许你强制执行dom.ready事件吗?
答案 0 :(得分:2)
它会触发事件,因为它是事件的处理程序。 http://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L397
它是一个不应该在jQuery核心之外使用的内部方法,除非你知道它的作用,它为什么这样做,并且有充分的理由使用它。
它只是告诉jQuery DOM已经准备好了。这是应用于DOMContentLoaded
事件的处理程序。正如您所注意到的那样,自己调用可能会导致事件过早发生。很可能代码中的用法是这样的:
$(document).ready(function(){
});
答案 1 :(得分:1)
.ready()
就会运行。 (请记住,$
是一个对象,可以选择。)
当您指定$.ready()
时,您告诉代码在加载jQuery($
)后立即运行(而不是$(document).ready()
,它在加载文档时运行) ,这就是它在你的DOM加载之前运行的原因。
$.ready()
相当于$(document).on('ready', $, handler)
。