257

次の略記は$(document).ready

(function($){

//some code

})(jQuery);

このパターンはよく使われているようですが、それへの参照を見つけることができません。の省略形である場合、それ$(document).ready()が機能しない可能性がある特別な理由はありますか?私のテストでは、準備完了イベントの前に常に起動するようです。

4

8 に答える 8

568

省略形は次のとおりです。

$(function() {
    // Code here
});
于 2011-05-14T19:00:36.727 に答える
260

の省略形は$(document).ready(handler)です$(handler)(ここhandlerで、は関数です)。ここを参照してください。

あなたの質問のコードはとは何の関係もありません.ready()。むしろ、これは、引数としてjQueryオブジェクトを使用した即時呼び出し関数式(IIFE)です。その目的は、少なくとも$変数のスコープをそれ自体のブロックに制限して、競合を引き起こさないようにすることです。通常、jQueryプラグインがそれを確実にするために使用するパターンが表示されます$ == jQuery

于 2011-05-14T19:00:22.487 に答える
93

正しい省略形は次のとおりです。

$(function() {
    // this behaves as if within document.ready
});

投稿したコード…</p>

(function($){

//some code

})(jQuery);

…無名関数を作成しjQuery、argとして渡されてすぐに実行し$ます。$はすでにのエイリアスであるため、効果的に実行するのは、関数内のコードを取得して通常のように実行することだけですjQuery。:D

于 2011-05-14T19:06:23.423 に答える
16

これはの省略形ではありません$(document).ready()

投稿したコードは内部コードをボックス化し$、グローバル名前空間を汚染することなくjQueryを利用できるようにします。これは、1つのページでプロトタイプとjQueryの両方を使用する場合に使用できます。

ここに記載されています:http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/#use-an-immediately-invoked-function-expression

于 2011-05-14T19:04:00.863 に答える
14

さらに短いバリアントを使用することです

$(()=>{

});

ここで$、jQueryを表し、クロージャーから継承する()=>{}いわゆる「矢印関数」です。this(そのため、thisおそらくwindowの代わりになりdocumentます。)

于 2018-10-04T22:38:43.167 に答える
11

これらの特定の行は、jQueryプラグインの通常のラッパーです。

「...プラグインがドル記号を使用する可能性のある他のライブラリと衝突しないようにするために、jQueryをドル記号にマップする自己実行関数(クロージャ)に渡して、プラグインを実行できるようにすることをお勧めします。」実行範囲内で別のライブラリによって上書きされることはありません。」

(function( $ ){
  $.fn.myPlugin = function() {
    // Do your awesome plugin stuff here
  };
})( jQuery );

http://docs.jquery.com/Plugins/Authoringから

于 2011-05-14T19:11:08.073 に答える
11

準備のためのマルチフレームワークの安全な速記は次のとおりです。

jQuery(function($, undefined) {
    // $ is guaranteed to be short for jQuery in this scope
    // undefined is provided because it could have been overwritten elsewhere
});

これは、$undefined変数を使用するフレームワークがjQueryだけではないためです。

于 2013-12-16T12:31:35.840 に答える
0

これはどうですか?

(function($) { 
   $(function() {
     // more code using $ as alias to jQuery
     // will be fired when document is ready
   });
})(jQuery);
于 2016-07-23T12:54:37.743 に答える