jQuery选择器:为什么$("#id").find("p")比$("#id p")快

Dan*_*don 7 javascript performance jquery jquery-selectors

本页的作者:http://24ways.org/2011/your-jquery-now-with-less-suck声称jQuery选择器 $('#id').find('p')速度快$('#id p'),但如果我理解正确,可能会产生相同的结果.造成这种差异的原因是什么?

小智 6

因为$('#id').find('p')优化做...

document.getElementById('id').getElementsByTagName('p');
Run Code Online (Sandbox Code Playgroud)

...而我猜测$('#id p')将使用,querySelectorAll如果可用,或基于JavaScript的选择器引擎,如果没有.


您应该注意,性能始终在浏览器之间存在差异.众所周知,Opera的速度非常快querySelectorAll.

此外,不同版本的jQuery可能会提出不同的优化.

它可能$('#id p')(或目前)与第一个版本进行相同的优化.