我需要找回第一个元素。
我用这个密码..。
$(element).find('.x').first();据我所知,那个密码..。
element检索与.x匹配的所有元素,有什么更好的方法吗?像$.findOne()之类的吗?
发布于 2011-08-24 16:48:12
根据jQuery文档:
因为:首先是一个jQuery扩展而不是CSS规范的一部分,所以使用:first的查询不能利用原生DOM querySelectorAll()方法提供的性能提升。要在使用时获得最佳性能:首先要选择元素,首先使用纯CSS选择器选择元素,然后使用.filter(" :first ")。
因此,请将选择器重写为:
$(element).find('.x').filter(":first")或者(除非您也在寻找嵌套元素,否则这只会给您直接的后代,并且将比.find更快)
$(element).children('.x').filter(":first")会给你更好的结果。
在更新了来自金吉夫和帕特里克·dw的有价值的输入之后(请参阅注释),与文档所称的相反,这两者似乎比.filter(':first')更快。
$(element).find('.x').first(); // faster
$($(element).find('.x')[0]); // fastest发布于 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])
编辑:关于原因的解释,请参阅姆尔杰斯的答案。显然,他们现在已经把它添加到文档中了。
发布于 2011-08-24 16:47:07
这应该更好
$(element).find('.x:first');https://stackoverflow.com/questions/7179163
复制相似问题