2013-01-24 7 views
10

jQueryを使用すると、を$(selector)[0]以上使用すると、jQuery配列の最初の項目をDOM要素として取得するだけの利点がありますか?DOM要素を取得するのになぜjQuery(セレクタ).get(0)をjQuery(セレクタ)[0]の代わりに使用しますか?

HTML:

<form id="myForm"></form> 

Javascriptを:

var selector = '#myForm'; 
var domElement = $(selector).get(0); //Returns [object HTMLFormElement] 

//Or 
var domElement = $(selector)[0]; //Also returns [object HTMLFormElement] 
  • .get()を入力する以上の文字です。
  • $(selector)が空の場合、どちらの方法は、あなたは、単にn番目の要素を取得するには、インデックスアクセサを使用することができますが、このような使用など.get()の他の利点を得ることはありません(undefined
  • The jQuery documentation on .get()ノートと同じ結果を返します配列の最後から項目を返す負の数。
  • さらに、引数なしで.get()を呼び出して、jQuery配列のすべてのDOM要素を返すことができます。
+6

に向けて、私は質問を読んでいない –

答えて

21

.getは、負のインデックスを使用できます。例えば:

<span>1</span> 
<span>2</span> 
<span>3</span> 

$("span").get(-1);は第spanを指します。

しかし、その機能を必要とせず、1つの要素を選択したい場合は、.get(0)[0]は同じです。 this[num]に注意してください:スピードの関心で

// jQuery code 
get: function (num) { 
    return num == null ? 

    // Return a 'clean' array 
    this.toArray() : 

    // Return just the object 
    (num < 0 ? this[this.length + num] : this[num]); 
}, 
+0

、あなたの質問に答えたと思います。..彼はすでにこの優位性を指摘しています.... –

+1

Matt - あなたの答えはjQueryのソースコードを指摘したので貴重です。私はちょうどそれを見て考える必要があります! –

5

を私はそれぞれ10,000,000回以上ループしjsfiddleを作成しました。私は、文書の最初にフォームで2つのテストを作成し、その間に1200行のダミーHTMLを作成しました。いくつかの予備結果があります:

Test1 
form at beginning with .get(0): 15981ms - faster 
form at beginning with [0]:  16089ms 
form at end with .get(0):  16554ms 
form at end with [0]:   15969ms - faster 

Test2 
form at beginning with .get(0): 14137ms 
form at beginning with [0]:  14034ms - faster 
form at end with .get(0):  13756ms - faster 
form at end with [0]:   14492ms 

Test3 
form at beginning with .get(0): 15952ms - faster 
form at beginning with [0]:  16810ms 
form at end with .get(0):  15905ms 
form at end with [0]:   15532ms - faster 

速度に大きな違いは見られません。しかし、確かめるためにはさまざまなブラウザをチェックインする必要があります。

あなたがここにフィドルをチェックアウトすることができます:http://jsfiddle.net/AFfYx/を(実行する分程度かかります)

5

私はericbowdenの答えにコメントするにはあまりにも低担当者を持っているが、ここでは二つの動作比較jsperfテストです:

http://jsperf.com/selector-get-0-vs-selector-0

(クローム32上の)コンセンサス:基本的には同じ、非常にマイナーな利点[0]

関連する問題