2012-05-08 88 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的回答。它實際上並不是一個數組,它是一個帶有類似數組的結構的JQuery對象,它只包含1個元素(就像您使用'ID Selector'一樣)。添加'[0]'返回DOM元素而不是JQuery對象,允許你使用'.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")是ID的一個選擇器,它返回一個jQuery物體(未每本身的陣列,但它有一個陣列狀結構),則[0]部實際上是返回元素的本地DOMElement對象,其ID爲shuffle,而不是通過調用$('#shuffle')(不含[])返回的jQuery對象。

基本相同,這樣做document.getElementById('shuffle')

EDIT(馬特指出)

這將然後讓你做你的.play()調用,開始音頻流。

+0

最佳答案在這裏,我只是想發佈類似的東西。這裏需要注意的重要一點是,用'[0]'去除數組意味着你得到'DOMElement',而不是jQuery的'',它允許你做'.play()'調用來啓動你的音頻流。 –

+0

謝謝NiftyDude。這幫助我把它放在一起。我需要讓DOM元素使用play():http://www.w3schools.com/HTML5/av_met_play.asp – Anatoly

0

它返回包含匹配元素集中第一個元素的原生javascript對象。

10

jQuery是一個類似數組的對象,它包含所有匹配的元素。很多時候,jQuery將默認其更改應用到的第一個元素集合中:

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

即使可能已經發現了許多li元素,jQuery對象告訴我們關於第一個含蓄。我們可以明確地指示它這樣做,通過使用$.get方法:

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

我們可以檢查nodeName來驗證這一點:

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

如果我們看一下在幕後,我們可以看到$.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),但正如我們剛剛看到的,這只是增加了一個步驟。在內部,jQuery將執行與上面執行的代碼相同的代碼,[0]

0

其用來表示對象的時間序列順序來處理總是用在陣列[0],[1],[2] ......可以檢查Here

相關問題