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

Ana*_*oly 7 javascript jquery html5-audio

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

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

shuffle.play();
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Sam*_*son 10

jQuery是一个类似于数组的对象,它包含所有匹配的元素.通常,jQuery默认将其更改应用于集合中的第一个元素:

$("li").css("display"); // display val of first element, not all elements.
Run Code Online (Sandbox Code Playgroud)

尽管li可以找到很多元素,但jQuery对象会隐式地告诉我们第一个元素.我们可以通过使用以下$.get方法明确指示它这样做:

$("li").get(0); // Returns first DOM element
$("li")[0]; // Also returns first DOM element
Run Code Online (Sandbox Code Playgroud)

我们可以检查nodeName以验证这一点:

$("li").get(0).nodeName; // LI
$("li")[0].nodeName; // LI
Run Code Online (Sandbox Code Playgroud)

如果我们查看封面,我们可以看到如何$.get()实现:

get: function(num) {
  return num == null 
    ? this.toArray() 
    : ( num < 0 
          ? this[ this.length + num ] 
          : this[ num ] );
}
Run Code Online (Sandbox Code Playgroud)

从中我们可以看到,当没有提供参数时,整个元素集合将转换为数组,然后返回.例如2,当提供参数时,我们将元素作为索引2返回.如果-2提供,则将其添加到长度(假设长度为5,5 +( - 2)为3)并且结果数字用作指数.

所以关于你的特定例子:

var shuffle = $("#shuffle")[0];
shuffle.play();
Run Code Online (Sandbox Code Playgroud)

jQuery用于获取id值为的任何元素shuffle.这将返回类似jQuery数组的对象.但是你的play()方法在jQuery对象上不存在,它存在于#shuffle对象上.因此,您需要获取集合中的第一个元素.

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


Fab*_*tté -1

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