これらの回答はすべて、回答全体の断片です。. . もう一品追加させてください。:)
他の人が言ったように、$(...)
表記は JQuery オブジェクトを返す JQuery 関数です。「...」が何であるかに応じて、それがどのように行われるかを決定します。
いくつかの例:
そこに「div」などのセレクターを配置すると、セレクター パターンに一致するすべての DOM 要素を含む JQuery オブジェクトが取得されます。. . この場合、すべての<div>
要素です。
HTML 要素の文字列表現 (例: "<div></div>"
) を渡すと、新しく作成された要素を指す JQuery オブジェクトが取得され<div>
ます。
そこに DOM ノード参照 (たとえば、 を使用して作成されたものdocument.getElementsByTagName("div")
) を配置すると、参照内のそのノードを指す JQuery オブジェクトが作成されます。
これの全体的なポイントは、JQuery が JQuery オブジェクトで動作するということです。したがって、これらのさまざまな関数はプログラマーがオブジェクトを作成するのに役立ちます。
これがあなたの質問に行き着くところです。. .
を使用するたびに$("...")
、まったく新しいオブジェクトが作成されるため、たとえば、次のコードは 2 つの一意の JQuery オブジェクトを生成し、それぞれが同一の DOM 要素を指します。
var $firstObject = $("div");
var $secondObject = $("div");
したがって、それらを (このように($firstObject === $secondObject)
) 比較すると、同じオブジェクトではないため、同等とは見なされません。
ここで、もう少し明確にするために、2 番目の例を少し変えてみましょう。次のように、3 番目の変数を作成して 2 番目の変数と同じ値に設定すると、次のようになります。
var $thirdObject = $secondObject;
. . . 実際には同じ JQuery オブジェクトを指している 2 つの要素があるため、実際には同じです (つまり、($secondObject === $thirdObject)
true と評価されます)。
最後に、このコードで示したものは次のとおりです。
$(nav).hide();
. . . は、JQuery オブジェクトを作成しようとする単なる別の例です。. . 今回は別の JQuery オブジェクトを使用します。ただし、上で作成した 3 番目の変数でこれを行うと、2 番目の変数との関係が壊れます。. . ($secondObject === $($thirdObject))
. . . 比較の両側が同じオブジェクトを指していないため、それらは等しくなくなります。$firstObject
以前のとの比較と同様に$secondObject
、この比較では 2 つの一意の JQuery オブジェクトを使用しています。
でも 。. .
他のいくつかの回答とは異なり、それが完全に間違った形式のコーディングであることに同意しません。. . あなたの例で提供する状況では決して使用しませんが、JQuery オブジェクトを$(...)
関数に渡すことは、基本的に を使用することと同じです.clone()
。以下の 2 つの$bar
割り当ては、機能的に同等です。
var $foo = $("<div></div>");
var $bar = $($foo);
var $bar = $foo.clone();
JQuery API でも同じことが言えます ( http://api.jquery.com/jQuery/ )。
jQuery オブジェクトの複製
jQuery オブジェクトが $() 関数に渡されると、オブジェクトのクローンが作成されます。この新しい jQuery オブジェクトは、最初のものと同じ DOM 要素を参照します。
編集 :
好奇心から、jsPerf で簡単なテストをセットアップしました。このアプローチは、Firefox、IE9、および Chrome $($foo)
よりもかなり高速です: http://jsperf.com/clone-technique-test.clone()