2011-08-20 7 views
7
var myVar = $([]); 

このjQueryの機能は何ですか?

変数を空のjQueryセットに初期化していますか?私はjQueryのドキュメントを検索しましたが、この構文の説明は見つかりませんでした。空集合戻りjQueryのドキュメントhttp://api.jquery.com/jQuery/

から

抜粋 - 引数なしでjQueryの()メソッドを呼び出すと、jQueryの1.4のよう

はlengthプロパティで(空のjQueryのセットを返します0)。以前のバージョンのjQueryでは、これはドキュメントノードを含むセットを返します。

$([])は、空のjQueryセットを返すレガシーメソッドである可能性がありますか、まったく違うことをしますか?

+4

(選択/好みによる)(旧コードや古い習慣からの)レガシーおよび/または明示的な、はい。猫の皮膚にはさまざまな方法があります。 (新しい「空の」jQueryオブジェクトを作成します。) –

+2

あなた自身の質問に答えました。 –

+0

;)それは確かに良いことです。確認していただいてありがとうございます! –

答えて

1

"レガシー"(pstのコメントのように)を解釈するさまざまな方法がありますが、その表現は正確に文書化されています。私たちは、私たちは、それはいくつかの異なる形で引数を受け取ることができます参照してくださいjQueryを見上げ$機能がjQueryと同じであることを知っている:

  • jQuery(selector, [context])
  • jQuery(element)
  • jQuery(elementArray)
  • jQuery(jQueryObject)
  • jQuery()

素子アレイを受け入れる一方がそうように文書化されている:

  • elementArray:jQueryオブジェクトにラップするDOM要素のセットを含むアレイ。

これは、「$([])が空のjQueryセットを返すための従来の方法ですか、それともまったく違うことをしますか?という意味では、それは違うことをしません。あなたは空の配列のすべての要素を持つjQueryオブジェクトを取得します。それらのすべてゼロ。

あなたの質問で言及したように、1.4のようにプレーンオール '$()はあなたに空のセットを与えます、そして、私はそれを今のところ好きな方法かもしれないと思います。つまり、$([])は素敵で明示的であり、依然としてサポートされています。

1

$(obj)を使用すると、空のjQueryオブジェクトを作成することができますが、これは例えば$()

異なっている:私は、集中オブジェクトに基づいて行動を取るカスタムイベントを持っている必要が名前空間のソリューションを持っています。私は自分自身のEventHandlerクラスを書いていますが、基本的に私的なものを囲んでいます。$({})

これは、イベントホルダーとトリガーとして機能するオブジェクトを持つことができます。私はEventHandlerクラスでbind()、unbind()、およびtrigger()を公開しています。

$()は、ベースオブジェクトがないため、バインドしてトリガーすることはできません。 $({})$()がないことないこと事があります。私はそれとして、これを行うと、そのアイデアが$({})

長い話を短くするために、「デフォルト」または「空」jQueryオブジェクトを持っているために、より理にかなって全くわからないんだけど。しかし、$([])$()は、私がやった最小限のテストから同じように動作するようです。おそらく$(new Array())はまだまだ違った働きをしますが、私はそれを研究する気にしません。

例とEDIT:

var testA = $(); 
testA.bind('customEvent', function() { alert('empty custom'); }); 
testA.trigger('customEvent'); // will not get an alert 

var testB = $({}); 
testB.bind('customEvent', function() { alert('object custom'); }); 
testB.trigger('customEvent'); // will get an alert 


var testC = $([]); 
testC.bind('customEvent', function() { alert('array custom'); }); 
testC.trigger('customEvent'); // acts like testA 
+0

空のノードセットで何をバインドするかトリガーしますか? –

+0

'[]'は 'Object'です。たとえば、my codeには、JSデータロードモジュールがトリガーする 'myDataLoaded'などのイベントがあります。モジュールはDOMオブジェクトではないので、独自のイベントセットを持たず、イベント用にモジュールを検索したくないので、ちょうどグローバルなイベントハンドラオブジェクトで登録します。こうすることで、他のモジュールがトリガーやトリガーがどこから来るのかを知る必要なく、私のカスタムイベントを購読することができます。 –

+0

'[]'は配列オブジェクトです、はい。そう? '$()'は '$([])'と同様にオブジェクトを与えます。 –

関連する問題