首先使用:优化jQuery选择器

时间:2010-12-10 10:22:02

标签: jquery optimization jquery-selectors

我感觉$('.class:first')的运行速度比$('.class')快。所以,只要我知道子集中只有一个.class,我就用它了。

:first会使查询运行得更快,还是不必要?

2 个答案:

答案 0 :(得分:4)

它实际上取决于浏览器,:first不是CSS选择器,它是一个jQuery过滤器 - 因此需要一些额外的解析工作......其中.class本身可以切换到本机浏览器选择器方法(例如document.querySelectorAll())。

其中任何一个实际上都会更快:

$('.class').first()
//or...
$('.class').eq(0)
//or fastest:
$('.class').slice(0, 1)

...因为他们运行本机代码然后只需要获取该集合中的第一个条目。

答案 1 :(得分:2)

如果有的话,解析然后在:first上运行过滤器会使它变慢。如果您正在寻找单个元素,请执行以下操作:

$('.class', context).eq(0)

通过这种方式,您可以将搜索范围限制为context,并使用.eq(0)取出单个(或禁止)项目。