メソッドが解決しようとしている問題$(document).ready(..)
は、ページの JavaScript コードの実行と、ページ内のコントロールがバインドされる時間の間の緊張です。ドキュメントのready
準備が整い、DOM 要素が利用可能になると関数が起動するため、JavaScript コードは DOM について合理的な仮定を行うことができます。
最も一般的な例は、操作しようとしている DOM 要素に対する JavaScript コードの場所です。検討
<script>
$('#target').click(function() {
alert('It was clicked');
});
</script>
<div id="target">Click Me</div>
この特定の例では、JavaScript は意図したとおりに機能しません。スクリプト ブロックに入るとclick
行が実行され、現在 id を持つ DOM 要素がないtarget
ため、ハンドラーは何もバインドしません。コードに問題はありません。単に DOM 要素が作成される前に実行するタイミングが悪かっただけです。
この例では、コードと DOM 要素が視覚的にペアになっているため、問題は明らかです。より複雑な Web ページでは、javascript は完全に別のファイルにあることが多く、読み込み順序について視覚的な保証はありません (そうすべきではありません)。抽象化を使用する$(document).ready(..)
と、潜在的な問題の原因となる順序付けの問題が取り除かれ、懸念事項の適切な分離が促進されます。