我正在使用此代码播放预先加载的mp3文件。Jquery选择器后的[]括号是什么意思?
var shuffle = $("#shuffle")[0];
shuffle.play();
洗牌是我的ID。我从网上获得了代码,但我无法弄清楚jquery选择器之后的[0]是什么。如果我删除它,声音不会播放。它是做什么的?
谢谢
我正在使用此代码播放预先加载的mp3文件。Jquery选择器后的[]括号是什么意思?
var shuffle = $("#shuffle")[0];
shuffle.play();
洗牌是我的ID。我从网上获得了代码,但我无法弄清楚jquery选择器之后的[0]是什么。如果我删除它,声音不会播放。它是做什么的?
谢谢
返回数组的第n个元素。与常规的javascript或php相同,并且是支持数组的编程语言的很好的一部分。
JQuery返回一个数组。 [0]获取数组中的第一个项目。
从技术上讲,它是一个jQuery数组类对象,而不是数组。除非您尝试像'.shift()'这样的第一个元素,否则不是问题。 – Blazemonger
$("#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>
在您的问题的直接上下文,$("#shuffle")
是ID的一个选择器,它返回一个jQuery
物体(未每本身的阵列,但它有一个阵列状结构),则[0]
部实际上是返回元素的本地DOMElement
对象,其ID为shuffle
,而不是通过调用$('#shuffle')
(不含[]
)返回的jQuery
对象。
基本相同,这样做document.getElementById('shuffle')
EDIT(马特指出)
这将然后让你做你的.play()
调用,开始音频流。
最佳答案在这里,我只是想发布类似的东西。这里需要注意的重要一点是,用'[0]'去除数组意味着你得到'DOMElement',而不是jQuery的'',它允许你做'.play()'调用来启动你的音频流。 –
谢谢NiftyDude。这帮助我把它放在一起。我需要让DOM元素使用play():http://www.w3schools.com/HTML5/av_met_play.asp – Anatoly
它返回包含匹配元素集中第一个元素的原生javascript对象。
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],[1],[2] ......可以检查Here
http://stackoverflow.com/questions/1302428/what-does-jquery-actually-return – Jack
感谢迄今为止所有的答案。我想我应该详细说明。我认为这是一种排序。但是,你会在哪里发现音频标签的第一个元素是播放按钮? – Anatoly
查看NiftyDude的回答。它实际上并不是一个数组,它是一个带有类似数组的结构的JQuery对象,它只包含1个元素(就像您使用'ID Selector'一样)。添加'[0]'返回DOM元素而不是JQuery对象,允许你使用'.play()'方法。 –