1

私は何年も Javascript を使用してきましたが、jQuery のようなライブラリを使用する必要性を感じたことはありません。私が現在働いている場所では、このライブラリが使用されており、私はまだ純粋な Javascript に固執することを好みますが、非常に興味深いと感じました。

この質問には理論的な価値があります。.readyDOM ツリーの一般的な要素に関連する場合、関数がどのように機能するのか疑問に思っています。

ドキュメントでどのように機能するかについてのスレッドを見つけまし.ready()たが、jQuery が何らかの形で DOM event を使用していることを理解するのは難しくありませDOMContentLoadedん。

ただし、ページ内の特定の要素の読み込みのキャッチはそれほど明白ではありません。これは、知る限り、そのためのイベントがないためです。

jQuery は Javascript であり、ドキュメントのあらゆる部分にイベント リスナーを追加できるため、jQuery は<script>ロード イベントを処理する要素の後にタグを追加しないか、解析がそれを通過した後に作成された場合は実行されません。点。

また、jQuery は setInterval に基づくチェックを使用せず、要素が作成されたかどうかを繰り返しチェックします。これは、多くのリソースを浪費するため (特に、多くの要素にロード イベントがある場合)、その作成時にコンテキストでトリガーされることはめったにないためです。エレメント。

私が想像できることは、DOMContentLoadedイベントをキャッチすることです (つまり、要素のロード後ではなく、すべてのドキュメントがロードされた後)、jQuery は.ready()ドキュメント イベントに配置された人為的なイベントを DOM ツリーに沿って表示される順序で呼び出します。それは正しいですか、それとも jQuery は回避策を見つけましたか?

要素のハンドラー内で、id「myelement」としましょう。 の後に表示される別の要素$(#myelement).ready()を試してみると、「未定義」の代わりに正しい値が得られると思います。の後に html 内に配置されたスクリプトでその要素を取得します。getElementById("someID")#myelement#myelement

では、イベント内の(#myelement).ready()すべてのイベントに応答する架空のイベント ハンドラーですか?element.ready()DOMContentLoaded

書きすぎたらごめんなさい;;私が明確だったことを願っています

4

1 に答える 1

0

まあ、http://api.jquery.com/ready/によると、このready()関数は、DOM の準備ができた (完全にロードされた) 後に実行するハンドラ/関数です。さらに読む....

.... In most cases, the script can be run as soon as the DOM hierarchy has been fully constructed. The handler passed to .ready() is guaranteed to be executed after the DOM is ready,

また、同ソースによると

次の 3 つの構文はすべて同等です。

$(document).ready(handler)
$().ready(handler) (this is not recommended)
$(handler)

そのため...関数は個々の要素ではなくにready()のみ適用されます。document

于 2013-04-30T12:57:36.903 に答える