Jquery。第一个行为

时间:2014-05-13 18:46:31

标签: javascript jquery

所以我有一个简单的html页面:

<h1>Start</h1>
<canvas class="myCanvas" width="400" height="400"></canvas>
<canvas class="myCanvas" width="400" height="400"></canvas>

在jquery我做,

> $(".myCanvas")
| [<canvas class=​"myCanvas" width=​"400" height=​"400">​, 
|  <canvas class=​"myCanvas" width=​"400" height=​"400">​]

然后,

> $(".myCanvas").first()
| [<canvas class=​"myCanvas" width=​"400" height=​"400">​]

我认为我应该在第一个()方法的调用中得到一个元素,就像在

中一样
> $(".myCanvas").get(0)
| <canvas class=​"myCanvas" width=​"400" height=​"400">​

那么为什么第一个方法返回一个数组..?

3 个答案:

答案 0 :(得分:6)

.first()方法将结果集过滤到第一个元素并返回一个jQuery对象,而.get(0)只返回第一个DOM元素。

jQuery对象显示为数组的原因是因为jQuery对象充当DOM元素的增强数组,并在其原型上使用了其他方法。出于这个原因,.get(0)实际上与[0]相同。

答案 1 :(得分:1)

  

我认为我应该在第一个()方法的调用中得到一个元素

不,first确实返回一个jQuery集合(仅包含一个第一个元素,甚至根本没有元素),因此您可以在其上调用更多jQuery方法。请注意,它不会返回Array,只会返回some special array-like object

相反,get会返回集合中的第一个DOM元素或undefined

答案 2 :(得分:0)

引用Documentation

  

将匹配元素集合减少到集合中的第一个元素。