2012-05-08 55 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

相关问题