次のようなJQuery $(function()
ステートメントがあります。
_<script type="text/javascript">
$(function(){
//Code..
})
</script>
_
愚かな質問-この関数は正確にいつ実行されますか? HTMLページ全体がクライアントによってダウンロードされたときですか?
単に行うのではなく、$(function()
内でコードをラップすることの利点は何ですか:
_<script type="text/javascript">
//Code..
</script>
_
DOMが解析されるとすぐに実行され、複数の出現がある場合は出現順に呼び出されます。ただし、この時点ではドキュメントは表示されず、解析されただけです。
ドキュメントが解析され、準備ができたときに起動し、$(document).ready(function () { })
と同等です。
明らかな利点は、ページ上の他の要素の前にスクリプトタグがあることは、解析時に利用できない場合でも、スクリプトがそれらと対話できることを意味します。要素が解析される前にスクリプトを実行し、ドキュメントの準備ができていない場合、インタラクションに使用できません。
ドキュメントの読み込みが完了すると。これを書くのと同じです:
$(document).ready(function(){});
編集:2番目の質問に答えるには:
上記のブロックでコードをラップしない場合、ページ上のすべてのコントロールが読み込まれた後ではなく、コードが検出されるとすぐに起動します。そのため、ブロックがページの上部にあり、ページ内の要素を参照した場合、要素がまだロードされていないため、それらの参照は機能しません。
しかし、ブロックをラップすると、ページがロードされ、すべての要素が参照できるようになったことがわかります。