jQuery单选择器vs .find()

Dan*_*Dan 54 javascript jquery jquery-selectors

哪个更适合用作性能视角:

$(".div1 h2, .div1 h3")
Run Code Online (Sandbox Code Playgroud)

要么

$(".div1").find("h2, h3")
Run Code Online (Sandbox Code Playgroud)

Jam*_*gne 49

http://jsperf.com/selector-vs-find-again

选择器更快

(注意:组成随机html只是因为它不仅仅是页面上的那些元素)

  • 这是实际的答案; 而不只是"它无关紧要".这很重要因为OP问道. (20认同)
  • 我得到了这个......`选择器` - 35,349 - ±1.47% - 慢43%`查找' - 62,415 - ±2.58% - 最快其他测试(http://jsperf.com/single-selector-vs-find )它有`.hide()`链接,我几乎相反...发现慢了52%..有人能解释一下吗? (4认同)
  • 根据最新版本http://jsperf.com/selector-vs-find-again/60上的此测试,实际上查找速度更快,尤其是在简单查找中 (2认同)

zzz*_*Bov 35

你的问题的答案是:是的.

除非你的代码很慢,否则不要担心性能差异.如果是,请使用分析器确定瓶颈.

从分析的角度来看:

$(".div1 h2, div1 h3")
Run Code Online (Sandbox Code Playgroud)

应该更快,因为jQuery将通过它querySelectorAll(如果它存在)并且本机代码将比非本机代码运行得更快.它还可以节省额外的函数调用.

$(".div1").find("h2, h3")
Run Code Online (Sandbox Code Playgroud)

如果你计划链接其他一些功能,那就更好了.div1:

$(".div1").find("h2, h3").addClass('foo').end().show();
Run Code Online (Sandbox Code Playgroud)


小智 17

其实,.find()CAN更快.

在尝试选择多个元素时,选择器似乎更快找到; 但是,如果您使用$ .find,甚至缓存后代,您可以看到它更快:http: //jsperf.com/selector-vs-find-again/11

我也不同意表现不重要.在这个智能手机的世界里,电池寿命是王道.