javascript - jquery での $(function(){}) の使用について。
typecho
typecho 2017-06-26 10:51:00
0
5
1058

親愛なるヒーローの皆さん、私は js の初心者です。最近、簡単な Web サイトをデザインしていて、Web サイトから jq コードをコピーしました。
一部のコード セグメントの先頭が $(function(){...}) であることがわかりました。$( function(){...}) という形式で $( function(){$('#denglu_submit').click(function(){...
しかし、一部のコード スニペットには $(function(){}) がなく、直接 $(' #denglu_submit').click(function(){...など、テストしてみたところ、両方とも機能するようです。違いが何なのかわかりません。

typecho
typecho

Following the voice in heart.

全員に返信(5)
过去多啦不再A梦
  1. 両方のメソッドを置くと、html页面结构下面的话,写不写$(function(){})都行,都是等到页面加载完后执行(别忘了htmlは上から下に解析されてロードされます)。

  2. しかし、それらをすべてページ構造に配置すると、違いは大きくなります。 $(function(){})为网页加载完后执行,没有$(function(){})直接写的话是按html页面从上到下的顺序执行,也就是是说如果jsコードの実行時間が比較的長い場合(大量のデータの取得など)、次の HTML コンテンツはロードされて表示されません。 jsが実行されます。これは明らかに不合理です。 HTML コンテンツを最初に表示する必要があります。

  3. そのため、コードを書くときは通常、$(function(){})为好,这样就算jsコードにエラーがある場合、または実行に時間がかかる場合に、ユーザーのWebページの閲覧に影響を与えることなく、ページのメインコンテンツを読み込むことができます。そして、ページが完全に読み込まれることを保証するために、コードをページ構造の下に配置することが最善です (結局のところ、HTML は上から下の順に解析されて読み込まれます)。


その他豆知識$(function(){})为网页加载完后执行,好像和原生js的window.onload = function() {}同じですが、違いがあります。前者は構造体(ピクチャを除く)をロードした後に実行され、後者は構造体(ピクチャを含む)をロードした後に実行されます。

いいねを押す +0
女神的闺蜜爱上我

$(function(){}) これは、js がロードされ、dom 構造がロードされた後に実行される内部のロジックです。

$('#denglu_submit').click(function(){...}) これはjsが読み込まれた後に実行されます。

いいねを押す +0
阿神

$(function(){...})ここでの内容は、ページノードまたは参照ファイルがロードされるのを待ってから実行することです。これにより、ページ ノードがロードされ、セレクターに対応するノードも使用できるようになります。

$('#denglu_submit').click(function(){...}),这个是等加载到这里的时候就执行了,执行的时候并不知道#denglu_submit有没有加载到页面上。如果页面没有这个节点,那么对应的事件是没有反应的。
你可以试着把这两段段代码都放到head中で走らせてみれば違いが分かるでしょう!

いいねを押す +0
phpcn_u1582

window.onloadをご存知ですか?これはonloadよりも先に実行されます

いいねを押す +0
给我你的怀抱

まず、$ は関数名です。例:

リーリー

このようにして、$ という関数を定義し、それを自分でテストできます。 リーリー
ここでは、パラメータが $ 関数に渡されます。このパラメータは匿名関数 (名前のない関数、クロージャとも呼ばれます) です。 リーリー

最終的な実行は上記と同じですが、実行するために任意の関数を渡すことができます。 リーリー

実際には、文字列 '#denglu_submit' が $ メソッドに渡され、次に匿名関数が $ の click 関数に渡されます。関数全体の設計は次のようになります。 リーリー
もちろん、jquery は間違いなくより複雑です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート