2012-05-08 9 views
7

私はこのコードを使用して、プリロードされたmp3ファイルを再生しています。Jqueryセレクタの後に[]で囲まれた括弧は何を意味しますか?

var shuffle = $("#shuffle")[0]; 

shuffle.play(); 

シャッフルは私のIDです。私はネットからコードを取得しましたが、jqueryセレクタの後に[0]が何であるか把握できません。私はそれを削除すると、音が再生されません。それは何ですか?

ありがとう

+1

http://stackoverflow.com/questions/1302428/what-does-jquery-actually-return – Jack

+0

これまでのすべての回答に感謝します。私は詳しく述べるべきだと思う。私はそれが一種の配列だったと思います。しかし、あなたは、オーディオタグの最初の要素が再生ボタンであることを理解するためにどこに行くのですか? – Anatoly

+0

NiftyDudeの答えをチェックしてください。これは実際には配列そのものではなく、(IDセレクタを使ったように)1要素だけを含む配列のような構造を持つJQueryオブジェクトです。 '[0]'を追加すると、JQueryオブジェクトではなくDOM要素が返され、 '.play()'メソッドを使用できます。 –

答えて

0

返される配列のn番目の要素。通常のjavascriptやphpと同じで、配列をサポートするプログラミング言語の良い部分です。

0

JQueryは配列を返します。 [0]は配列の最初の項目をとります。

+0

技術的には、配列ではなくjQuery配列のようなオブジェクトです。最初の要素 '.shift()'のようなことをしない限り問題にはなりません。 – Blazemonger

0

$("#shuffle")[div,span,etc]
$("#shuffle")[n]のように、あなたのクエリに応じて、要素の配列を返しますが、あなたがこの場合、この配列
のn番目の要素を選択していることを意味し、$("#shuffle")[0]は、この配列の最初の要素を選択

0

$( '#shuffle')の後の角括弧は、そのセレクタの最初の要素を取得します。

質問の直接の関連で
$('div.test')[0]; 

<div class="test"></div> <-- this one would get returned 
<div class="test"></div> 
<div class="test"></div> 
1

に、$("#shuffle")jQueryオブジェクト返す、IDのセレクタである(ないあたり-SE配列を、それがアレイ状の構造を有している)、次いで[0]部実際には[]を除く$('#shuffle')を呼び出して返されたjQueryオブジェクトの代わりに、shuffleというIDを持つ要素のネイティブDOMElementオブジェクトを返しています。

document.getElementById('shuffle')

EDITを行うと本質的に同じ(マットが指摘したように)

これは、あなたがあなたのオーディオストリームを開始するために、あなたの.play()の呼び出しを行うことができます。

+0

ここで最善の答えは、私はちょうど同様の何かを投稿しようとしていた。ここで注意すべき重要な点は、 '[0]'で配列のderefencingをすると、オーディオストリームを開始するための '.play()'呼び出しを可能にするjQueryのものではなく、 'DOMElement'を取得するということです。 –

+0

NiftyDudeありがとうございます。それは私がそれを一緒に置くのを助けた。私はplay()を使うためにDOM要素を取得する必要があります:http://www.w3schools.com/HTML5/av_met_play.asp – Anatoly

0

これは、一致する要素のセットの最初の要素を含むネイティブのjavascriptオブジェクトを返します。

10

jQueryは、一致するすべての要素を含む配列のようなオブジェクトです。多くの場合、jQueryのは、デフォルトでは、コレクション内の最初の要素にその変更を適用します:多くのli要素が発見されている可能性もかかわらず

$("li").css("display"); // display val of first element, not all elements. 

は、jQueryオブジェクトが暗黙的に最初について教えてくれる。我々はカバーの下を見ると

$("li").get(0).nodeName; // LI 
$("li")[0].nodeName; // LI 

、我々は$.get()がどのように見ることができます:

$("li").get(0); // Returns first DOM element 
$("li")[0]; // Also returns first DOM element 

我々はこれを確認するためにnodeNameをチェックできます。私たちは、明示的に$.getメソッドを使用して、そうすることを指示することができ実装:

get: function(num) { 
    return num == null 
    ? this.toArray() 
    : (num < 0 
      ? this[ this.length + num ] 
      : this[ num ]); 
} 

これから、引数が指定されていない場合、要素のコレクション全体が配列を返してから返されます。例えば、2のような引数が指定された場合、要素をインデックス2として返します。-2を指定すると、これが長さに追加されます(長さが5,5 +( - 2)が3であると仮定します)。インデックスとして使用されます。

は、だからあなたの特定の例に関して:

var shuffle = $("#shuffle")[0]; 
shuffle.play(); 

のjQueryをshuffleのid値を持つ任意の要素を取得するために使用されます。これは、jQueryの配列のようなオブジェクトを返します。しかし、play()メソッドはjQueryオブジェクトに存在しません。それは#shuffleオブジェクトに存在します。そのため、コレクションの最初の要素を取得する必要があります。

$.get(0)を使用することもできますが、わたしが見たようにもう1歩追加するだけです。内部的には、jQueryは上記のコードと同じコードを実行します。[0]

0

そのオブジェクトの年代順を意味し、プロセスは常に[0]、[1]、[2] ...あなたがチェックすることができ、アレイ上で使用するHere

関連する問題