Jquery选择器后的[]括号是什么意思?

时间:2012-05-08 01:59:13

标签: javascript jquery html5-audio

我正在使用此代码播放预加载的mp3文件。

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

shuffle.play();

随机播放是我的身份。我从网上得到了代码,但我无法弄清楚jquery选择器之后的[0]是什么。如果我将其删除,声音就不会播放。它会做什么?

感谢

8 个答案:

答案 0 :(得分: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用于获取id值为shuffle的任何元素。这将返回类似jQuery数组的对象。但是你的play()方法并不存在于jQuery对象上,它存在于#shuffle对象上。因此,您需要获取集合中的第一个元素。

您可以使用$.get(0),但正如我们刚刚看到的那样,这只会增加一步。在内部,jQuery将执行您在上面执行的相同代码[0]

答案 1 :(得分:1)

在你的问题的直接上下文中,$("#shuffle")是一个id的选择器,它返回一个jQuery对象(不是一个数组本身,但它有一个类似数组的结构),那么[0]部分实际上返回了一个标识为DOMElement的元素的本地shuffle对象,而不是通过调用jQuery返回的$('#shuffle')对象(没有{ {1}})。

与执行[]

基本相同 编辑(马特指出)

这将允许您进行document.getElementById('shuffle')调用以启动音频流。

答案 2 :(得分:0)

返回数组的第n个元素。与普通的javascript或php相同,也是支持数组的编程语言的一部分。

答案 3 :(得分:0)

JQuery返回一个数组。 [0]取数组中的第一项。

答案 4 :(得分:0)

$("#shuffle")会根据您的查询返回一系列元素,例如[div,span,etc]
$("#shuffle")[n]表示您正在选择此数组的第n个元素
在这种情况下,$("#shuffle")[0]选择此数组的第一个元素

答案 5 :(得分:0)

$('#shuffle')后面的括号获得该选择器的第一个元素。

$('div.test')[0];

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

答案 6 :(得分:0)

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

答案 7 :(得分:0)

它意味着对象的时间顺序总是在数组[0],[1],[2]上使用......你可以检查Here