[英]What do [] brackets after a Jquery selector mean?
我正在使用此代碼播放預加載的 mp3 文件。
var shuffle = $("#shuffle")[0];
shuffle.play();
Shuffle是我的id。 我從網上得到了代碼,但我無法弄清楚 jquery 選擇器之后的 [0] 是什么。 如果我刪除它,聲音不會播放。它有什么作用?
謝謝
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 用於獲取 id 值為shuffle
任何元素。 這將返回類似 jQuery 數組的對象。 但是您的play()
方法不存在於 jQuery 對象中,它存在於#shuffle
對象中。 因此,您需要獲取集合中的第一個元素。
你可以使用$.get(0)
,但是正如我們剛剛看到的,這只是增加了一個步驟。 在內部,jQuery 將執行您在上面執行的相同代碼[0]
。
在您的問題的直接上下文中, $("#shuffle")
是一個 id 的選擇器,它返回一個jQuery
對象(本身不是數組,但它具有類似數組的結構),然后[0]
部分實際上是返回帶有 id shuffle
的元素的本機DOMElement
對象,而不是通過調用$('#shuffle')
(沒有[]
)返回的jQuery
對象。
本質上和做document.getElementById('shuffle')
編輯(正如馬特指出的那樣)
這將允許您執行.play()
調用以啟動音頻流。
$("#shuffle")
將返回一個元素數組,根據您的查詢,如[div,span,etc]
$("#shuffle")[n]
表示您正在選擇此數組的第n個元素
在這種情況下, $("#shuffle")[0]
選擇此數組的第一個元素
$('#shuffle') 后面的括號獲取提供的該選擇器的第一個元素。
$('div.test')[0];
<div class="test"></div> <-- this one would get returned
<div class="test"></div>
<div class="test"></div>
它返回包含匹配元素集中第一個元素的本機 javascript 對象。
返回數組的第 n 個元素。 與常規 javascript 或 php 以及支持數組的編程語言的很大一部分相同。
JQuery 返回一個數組。 [0] 取數組中的第一項。
它意味着要處理的對象的時間順序總是在數組 [0],[1],[2] 上使用...你可以檢查here
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.