jsperf's link
我不是一个jQuery专家(甚至不是一个好用户),我没有研究过它的全部源代码(只有一小部分不能帮助我解决这个问题)。
有人能给我解释一下吗?
发布于 2011-10-10 20:52:38
这一点:
$p.find("input,select");...uses本征querySelectorAll。
这一点:
$p.find("input");
$p.find("select");...uses本征getElementsByTagName。
getElementsByTagName的速度更快,可能是因为它是一个非常简单的选择,并且存在的时间更长,为它提供了更多的优化时间。
此外,当jQuery使用querySelectorAll时,即使您从指定的上下文进行搜索,它也会从document执行此操作,因此这会产生影响。为了将结果范围缩小到您提供的上下文,它将您的选择器更改为使用元素的ID,如果不存在,则为其提供一个临时ID。
我updated your test给出更多的比较。说明如果你真的很关心性能,你应该使用原生API。
发布于 2011-10-10 22:24:23
Ӫ_._Ӫ上面说的是真的,但请注意,结果不一定相等,因为第一个结果将以散布的文档顺序返回inputs和selects,而第二个结果将依次返回它们。这可能对您的应用程序无关紧要,但需要注意。
https://stackoverflow.com/questions/7712850
复制相似问题