7

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

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

shuffle.play();

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

谢谢

4

7 回答 7

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

于 2012-05-08T02:08:21.240 回答
1

在您问题的直接上下文中,$("#shuffle")是一个 id 的选择器,它返回一个jQuery对象(不是数组本身,但它具有类似数组的结构),然后该[0]部分实际上返回DOMElement元素的本机对象idshuffle而不是jQuery调用返回的对象$('#shuffle')(不带[])。

基本上和做的一样document.getElementById('shuffle')

编辑(正如马特指出的)

然后,这将允许您.play()拨打电话以启动您的音频流。

于 2012-05-08T02:02:32.130 回答
0

$('#shuffle') 之后的括号获取提供的该选择器的第一个元素。

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

<div class="test"></div> <-- this one would get returned
<div class="test"></div>
<div class="test"></div>
于 2012-05-08T02:01:30.447 回答
0

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

于 2012-05-08T02:04:04.420 回答
-1

它的意思是要处理的对象的时间顺序总是在数组[0],[1],[2]上使用......你可以检查这里

于 2012-05-08T06:53:07.737 回答
-1

返回数组的第 n 个元素。与常规的 javascript 或 php 相同,并且有很大一部分支持数组的编程语言。

于 2012-05-08T01:59:56.293 回答
-1

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

于 2012-05-08T02:00:35.607 回答