答案 0 :(得分:6)
此:
$p.find("input,select");
...使用原生querySelectorAll
。
此:
$p.find("input");
$p.find("select");
...使用原生getElementsByTagName
。
getElementsByTagName
只是更快,也许是因为它是一个非常简单的选择,并且已经存在更长时间,给它更多时间进行优化。
此外,当jQuery使用querySelectorAll
时,即使您从指定的上下文搜索,它也会从document
执行此操作,因此这会产生影响。要将结果缩小到您提供的上下文,它会更改您的选择器以使用元素的ID,或者如果不存在则为其提供临时值。
我updated your test进行更多比较。表明如果您真的关心性能,则应使用本机API。
答案 1 :(得分:0)
上面说的是什么___Ӫ是真的,但请注意结果不一定等同,因为第一个将(AFAIK)以散布文档顺序返回input
和select
并且第二个会一个接一个地返回它们。这可能与您的申请无关,但需要注意。