2

最近、DOM が読み込まれる前に jquery の document.ready が起動しているように見えるというバグがありました。呼び出していた最初のアイテムの後に誤ったコードがあることが判明しました

$.ready(function(){});

このステートメントが document.ready イベントを発生させているようです。

コードのサンプルを次に示します。

<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 イベントを発生させるのですか? これは、dom.ready イベントを強制的に発生させることができる jquery の「機能」ですか?

4

2 に答える 2

2

イベントのハンドラーであるため、イベントを発生させます。http://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L397

それが何をするのか、なぜそれをするのか、そしてそれを使用する正当な理由がない限り、jQuery のコアの外で使用すべきではない内部メソッドです。

DOM の準備が整ったことを jQuery に伝えるだけです。DOMContentLoadedこれは、イベントに適用されるハンドラーです。お気づきのように、自分で呼び出すと、イベントの発生が早すぎる可能性があります。ほとんどの場合、コードでの使用法は、代わりに次のようになることを意図していました。

$(document).ready(function(){

});
于 2013-06-04T15:37:18.270 に答える
1

.ready()対象のオブジェクトの準備が整うとすぐに実行されます。($はオブジェクトであり、選択できることに注意してください。)

を指定する$.ready()と、jQuery ( ) がロードされるとすぐにコードが実行されるように指示されます(ドキュメントがロードされたときに実行$される とは対照的に$(document).ready())。これが、DOM がロードされる前に実行される理由です。

$.ready()と同等です$(document).on('ready', $, handler)

ドキュメントを見る.ready()

于 2013-06-04T15:37:25.827 に答える