web-dev-qa-db-ja.com

jQuery初心者:jQuery(function($){...})はどういう意味ですか?

JQueryでは、$(callback)jQuery(callback)と同じであり、$(document).ready()と同じ効果があります。

どうですか

_jQuery(function($) {

 });
_

この種の機能の意味を誰かに説明してもらえますか?

それは何をするためのものか?

これと$(callback)の違いは何ですか?

これと$(function())の違いは何ですか?

19
Leem
_jQuery(function($) {

});
_

3つすべての中で最も安全なバージョンです。 _$_をローカル変数にするため、_$_シンボルを使用する可能性のある他の変数との競合を適切に回避できます。

かなり最近追加されたと思いますが、以前に見たことを覚えていません。

これらの関数はすべて同じことを行います-DOMの準備ができたらコードを実行します。 $(document).ready(function(){})は元の関数であり、基盤となるjavascriptAPIと一致します。

関数を引数として受け入れる「$」と「jQuery」は、このような一般的な構成の繰り返しを避けるためのショートカットとして作成されました。 $を最初の引数として受け入れる関数を受け入れることは、さらなる構文糖衣構文です。これで、自分で行う必要なしにクロージャの利便性を得ることができます。

18
  • $(function())は構文エラーです。
  • $()は空のjQueryオブジェクトを作成します。
  • $(document).ready(function() { ... })は、DOMの準備ができたときに指定された関数を実行します
  • $(function() { ... })は同じことのショートカットです
  • jQuery(function($) { ... })もそうしますが、$関数の外部に何が設定されていても、関数の内部で使用できます。
17
ThiefMaster

だから私はこれについて訂正されました、そしてあなたが最初のコメントを読むならばそれはいくつかの文脈を与えます。

jQuery(function() {
    // Document Ready
});


(function($) {
    // Now with more closure!
})(jQuery);

100%確信はありませんが、これはjQueryオブジェクトをクロージャーに渡すだけだと思います。私はグーグルでいくつか掘り下げて、私が正しいか間違っているかを確認し、それに応じて更新します。

編集:

私はほとんど正しいですが、ここでは彼らのウェブサイトから直接です:

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

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

2
Seth

メインのjQueryファクトリ関数を(jQuery(<something>)または共通ショートカット$(<something>)として)呼び出すと、_<something>_のタイプに基づいて何をするかが決定されます。

文字列を_<something>_として渡すと、それがセレクター仕様であると見なされ、そのセレクターに一致する要素のjQueryリストが返されます。

JQueryオブジェクト(要素のリストを表す、つまり、jQueryへの前の呼び出しから返されたオブジェクト)を渡すと、そのオブジェクトが返されます(基本的にこれは非操作です)。

DOM要素を渡すと、その要素のみを含むjQueryリストが返されます(したがって、その要素にjQueryメソッドを適用できます)。これは$(document).ready()で起こっていることです-ファクトリ関数にDOM要素 "document"を渡し、その要素を表すjQueryオブジェクトを返し、そのオブジェクトのready()メソッドを使用してイベント処理関数を追加しますリスト内のすべてのDOM要素(この場合は1つだけ、document)のreadyイベントに移動します。

関数を渡すと、これは「すべての準備ができたらこれを実行する」の省略形にすぎないため、$(function() { ... });$(document).ready(function() { ... });と同等です。

2
David Spillett

まず、jQuery()$(document).ready()と同じではありません

$()jQuery()のショートカットです

そして...

$(function(){ ...});$(document).ready(function(){ ... });のショートカットです

したがって:

_jQuery(function(){ ... }) 
_

と同じように機能します

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

しかし...

_jQuery('#foo').css("background-color", "#f00");
_

と同じように機能しません

_$(document).ready('#foo').css("background-color", "#f00");
_

そう...

jQuery()not$(document).ready()と同じです

1
Mutt