web-dev-qa-db-ja.com

JQuery $ function()はどのイベントを起動しますか?

次のようなJQuery $(function()ステートメントがあります。

_<script type="text/javascript">
$(function(){
  //Code..
})
</script>
_

愚かな質問-この関数は正確にいつ実行されますか? HTMLページ全体がクライアントによってダウンロードされたときですか?

単に行うのではなく、$(function()内でコードをラップすることの利点は何ですか:

_<script type="text/javascript">
//Code..
</script>
_
40
Marcus Leon

DOMが解析されるとすぐに実行され、複数の出現がある場合は出現順に呼び出されます。ただし、この時点ではドキュメントは表示されず、解析されただけです。

18
Nrj

ドキュメントが解析され、準備ができたときに起動し、$(document).ready(function () { })と同等です。

明らかな利点は、ページ上の他の要素の前にスクリプトタグがあることは、解析時に利用できない場合でも、スクリプトがそれらと対話できることを意味します。要素が解析される前にスクリプトを実行し、ドキュメントの準備ができていない場合、インタラクションに使用できません。

31
Andy E

ドキュメントの読み込みが完了すると。これを書くのと同じです:

$(document).ready(function(){});

編集:2番目の質問に答えるには:

上記のブロックでコードをラップしない場合、ページ上のすべてのコントロールが読み込まれた後ではなく、コードが検出されるとすぐに起動します。そのため、ブロックがページの上部にあり、ページ内の要素を参照した場合、要素がまだロードされていないため、それらの参照は機能しません。

しかし、ブロックをラップすると、ページがロードされ、すべての要素が参照できるようになったことがわかります。

5
spinon