我感觉$('.class:first')
的运行速度比$('.class')
快。所以,只要我知道子集中只有一个.class
,我就用它了。
:first
会使查询运行得更快,还是不必要?
答案 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)
取出单个(或禁止)项目。