我正在使用此代码播放预加载的 mp3 文件。
var shuffle = $("#shuffle")[0];
shuffle.play();
洗牌是我的身份证。我从网上得到了代码,但我无法弄清楚 jquery 选择器之后的 [0] 是做什么的。如果我将其移除,声音不会播放。它有什么作用?
谢谢
我正在使用此代码播放预加载的 mp3 文件。
var shuffle = $("#shuffle")[0];
shuffle.play();
洗牌是我的身份证。我从网上得到了代码,但我无法弄清楚 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]
部分实际上返回DOMElement
元素的本机对象idshuffle
而不是jQuery
调用返回的对象$('#shuffle')
(不带[]
)。
基本上和做的一样document.getElementById('shuffle')
编辑(正如马特指出的)
然后,这将允许您.play()
拨打电话以启动您的音频流。
$('#shuffle') 之后的括号获取提供的该选择器的第一个元素。
$('div.test')[0];
<div class="test"></div> <-- this one would get returned
<div class="test"></div>
<div class="test"></div>
它返回包含匹配元素集中第一个元素的本机 javascript 对象。
它的意思是要处理的对象的时间顺序总是在数组[0],[1],[2]上使用......你可以检查这里
返回数组的第 n 个元素。与常规的 javascript 或 php 相同,并且有很大一部分支持数组的编程语言。
JQuery 返回一个数组。[0] 获取数组中的第一项。