2011-01-10 11 views
3

これを使用するさまざまな例を見てきましたが、私は知りたいのですが、jQueryコードを次のようにラップしないと危険ですか?jQueryの.ready()の必要性

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

私はそれが何を知っていて、あなたがそれを行う理由を私は知っているけど、それを持っていないために、より安全ではないか、単に悪い習慣/スタイルであれば、私は興味が?ありがとう! DR;

答えて

6

あなたのコードはDOMにアクセスする必要がある場合は、それを使用しています。

クラスとモジュールを設定していて、実際には実行していない場合は、レディハンドラでラップする必要はありません。

しかし、要素をロードする必要がある場合(イベントハンドラを追加するなど)、ready()イベントで行う必要があります。

編集:ここでは

は一例です:http://jsfiddle.net/ctrlfrk/43n8U/ はのAddHandler機能をコメントアウトしてみて何が起こるかを参照してください。

それは場所によって異なり

+2

詳細についてはこちらをご覧ください$(document).ready()

異なり知っておくべきだと思います。 http://encosia.com/2010/08/18/dont-let-jquerys-document-ready-slow-you-down/ – adamjford

+0

ああ、ランダムdownvote?どのようにあなたを感心? :P – david

4

(それは通常、準備ハンドラの必要性を否定するonloadイベント、内のコードを配置し、デフォルトでは、私は頭のタグでこのコードを実行するためにjsfiddle設定したことに注意してください)あなたのスクリプトを配置しています。 DOMタグが既にロードされているため、<body>の直前にスクリプトタグを追加すると、そのスクリプトタグを使用する必要はありません。一方、あなたのスクリプトタグを<head>セクションの中に置き、DOMにアクセスする場合は、それを絶対に使用する必要があります。そうしないと、スクリプトが実行された時点でDOMがまだ読み込まれて解析されていないためです。

1

ready()関数でコードをラップすると、ページがロードされるまでそのコードの実行が遅れます。コードは何とか「安全」にはなりません。

しかし、コードがあるスクリプトタグの後に作成されたDOMをクエリするコードを実行したい場合や、そのスクリプトタグの後に置かれたドキュメントの構造が必要な場合があります。その場合、ready()はあなたのためです。

しかし、一般的にready()関数を使用しない正当な理由はないので、everybodeがほとんど常にそれを使用しているのはこのためです。

0

私はあなたにもjQueryの$(window).load()とどのようにそれはあなたがライブ機能を経由してイベントを装着している場合、あなたがそれを必要としないけれども、それhere

関連する問題