首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >find('a,b')比find('a')+find('b')慢,为什么?

find('a,b')比find('a')+find('b')慢,为什么?
EN

Stack Overflow用户
提问于 2011-10-10 20:36:44
回答 2查看 157关注 0票数 5

jsperf's link

我不是一个jQuery专家(甚至不是一个好用户),我没有研究过它的全部源代码(只有一小部分不能帮助我解决这个问题)。

有人能给我解释一下吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-10 20:52:38

这一点:

代码语言:javascript
复制
$p.find("input,select");

...uses本征querySelectorAll

这一点:

代码语言:javascript
复制
$p.find("input");
$p.find("select");

...uses本征getElementsByTagName

getElementsByTagName的速度更快,可能是因为它是一个非常简单的选择,并且存在的时间更长,为它提供了更多的优化时间。

此外,当jQuery使用querySelectorAll时,即使您从指定的上下文进行搜索,它也会从document执行此操作,因此这会产生影响。为了将结果范围缩小到您提供的上下文,它将您的选择器更改为使用元素的ID,如果不存在,则为其提供一个临时ID。

updated your test给出更多的比较。说明如果你真的很关心性能,你应该使用原生API。

票数 6
EN

Stack Overflow用户

发布于 2011-10-10 22:24:23

Ӫ_._Ӫ上面说的是真的,但请注意,结果不一定相等,因为第一个结果将以散布的文档顺序返回inputs和selects,而第二个结果将依次返回它们。这可能对您的应用程序无关紧要,但需要注意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7712850

复制
相关文章

相似问题

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