簡體   English   中英

Jquery 選擇器后面的 [] 括號是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM