为什么$ .ready会激活jQuery document.ready事件?

时间:2013-06-04 15:29:29

标签: jquery document-ready

我们最近遇到了一个错误,在加载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没有完全加载。

http://jsfiddle.net/Kq78e/

我的问题是为什么$ .ready()会激活dom ready事件?这是一个jquery“功能”,它允许你强制执行dom.ready事件吗?

2 个答案:

答案 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)

请参阅.ready() documentation