首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何优化$.find().first()?

如何优化$.find().first()?
EN

Stack Overflow用户
提问于 2011-08-24 16:44:50
回答 9查看 4.5K关注 0票数 5

我需要找回第一个元素。

我用这个密码..。

代码语言:javascript
运行
复制
$(element).find('.x').first();

据我所知,那个密码..。

  1. element检索与.x匹配的所有元素,
  2. 移除不需要的元素;

有什么更好的方法吗?像$.findOne()之类的吗?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-08-24 16:48:12

根据jQuery文档:

因为:首先是一个jQuery扩展而不是CSS规范的一部分,所以使用:first的查询不能利用原生DOM querySelectorAll()方法提供的性能提升。要在使用时获得最佳性能:首先要选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(" :first ")。

因此,请将选择器重写为:

代码语言:javascript
运行
复制
$(element).find('.x').filter(":first")

或者(除非您也在寻找嵌套元素,否则这只会给您直接的后代,并且将比.find更快)

代码语言:javascript
运行
复制
$(element).children('.x').filter(":first")

会给你更好的结果。

更新了来自金吉夫帕特里克·dw的有价值的输入之后(请参阅注释),与文档所称的相反,这两者似乎比.filter(':first')更快。

代码语言:javascript
运行
复制
$(element).find('.x').first();   // faster

$($(element).find('.x')[0]);     // fastest
票数 11
EN

Stack Overflow用户

发布于 2011-08-24 16:54:40

尽管看起来很疯狂,但在我看到的每一次性能测试中,.first()的性能都比:first好。

正如大多数人所建议的那样,似乎使用$(element).find(".x:first")应该具有更好的性能。然而,在现实中,.first更快。我还没有研究jquery的内部结构来找出原因。

http://jsperf.com/jquery-select-first

显然,使用[0]并在jquery对象中重新包装是最快的:

$($(element).find(".x")[0])

编辑:关于原因的解释,请参阅姆尔杰斯的答案。显然,他们现在已经把它添加到文档中了。

票数 2
EN

Stack Overflow用户

发布于 2011-08-24 16:47:07

这应该更好

代码语言:javascript
运行
复制
$(element).find('.x:first');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7179163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档