親愛なるヒーローの皆さん、私は js の初心者です。最近、簡単な Web サイトをデザインしていて、Web サイトから jq コードをコピーしました。
一部のコード セグメントの先頭が $(function(){...}) であることがわかりました。$( function(){...}) という形式で $( function(){$('#denglu_submit').click(function(){...
しかし、一部のコード スニペットには $(function(){}) がなく、直接 $(' #denglu_submit').click(function(){...など、テストしてみたところ、両方とも機能するようです。違いが何なのかわかりません。
両方のメソッドを置くと、
html
页面结构下面的话,写不写$(function(){})
都行,都是等到页面加载完后执行(别忘了html
は上から下に解析されてロードされます)。しかし、それらをすべてページ構造に配置すると、違いは大きくなります。
$(function(){})
为网页加载完后执行,没有$(function(){})
直接写的话是按html页面从上到下的顺序执行,也就是是说如果js
コードの実行時間が比較的長い場合(大量のデータの取得など)、次の HTML コンテンツはロードされて表示されません。 jsが実行されます。これは明らかに不合理です。 HTML コンテンツを最初に表示する必要があります。そのため、コードを書くときは通常、
$(function(){})
为好,这样就算js
コードにエラーがある場合、または実行に時間がかかる場合に、ユーザーのWebページの閲覧に影響を与えることなく、ページのメインコンテンツを読み込むことができます。そして、ページが完全に読み込まれることを保証するために、コードをページ構造の下に配置することが最善です (結局のところ、HTML は上から下の順に解析されて読み込まれます)。その他豆知識
$(function(){})
为网页加载完后执行,好像和原生js的window.onload = function() {}
同じですが、違いがあります。前者は構造体(ピクチャを除く)をロードした後に実行され、後者は構造体(ピクチャを含む)をロードした後に実行されます。$(function(){}) これは、js がロードされ、dom 構造がロードされた後に実行される内部のロジックです。
$('#denglu_submit').click(function(){...}) これはjsが読み込まれた後に実行されます。
$(function(){...})
ここでの内容は、ページノードまたは参照ファイルがロードされるのを待ってから実行することです。これにより、ページ ノードがロードされ、セレクターに対応するノードも使用できるようになります。$('#denglu_submit').click(function(){...})
,这个是等加载到这里的时候就执行了,执行的时候并不知道#denglu_submit
有没有加载到页面上。如果页面没有这个节点,那么对应的事件是没有反应的。你可以试着把这两段段代码都放到
head
中で走らせてみれば違いが分かるでしょう!window.onloadをご存知ですか?これはonloadよりも先に実行されます
まず、$ は関数名です。例:
リーリーこのようにして、$ という関数を定義し、それを自分でテストできます。 リーリー
最終的な実行は上記と同じですが、実行するために任意の関数を渡すことができます。 リーリーここでは、パラメータが $ 関数に渡されます。このパラメータは匿名関数 (名前のない関数、クロージャとも呼ばれます) です。 リーリー
実際には、文字列 '#denglu_submit' が $ メソッドに渡され、次に匿名関数が $ の click 関数に渡されます。関数全体の設計は次のようになります。 リーリー
もちろん、jquery は間違いなくより複雑です。