Javascript jQuery选择器性能:按ID与按ID模式标记

Javascript jQuery选择器性能:按ID与按ID模式标记,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我对使用jQuery非常陌生,因此我相处得很好,可以得到预期的结果,但这里有一个关于性能的问题,对此我不确定答案: 假设预期的选择实际上是一个,以下哪一个选择器性能最好 $(“textarea[id='someID']) $(“#someID”) 提前谢谢 $(“someID”)会快得多 因为它基本上使用标准javascript文档。getElementById函数通过id选择始终是最快的方法,因为它使用javascripts自己的getElementById实现 在我的机器上(Win8,

我对使用jQuery非常陌生,因此我相处得很好,可以得到预期的结果,但这里有一个关于性能的问题,对此我不确定答案:

假设预期的选择实际上是一个
,以下哪一个选择器性能最好

  • $(“textarea[id='someID'])

  • $(“#someID”)

提前谢谢

$(“someID”)会快得多


因为它基本上使用标准javascript
文档。getElementById
函数

通过
id
选择始终是最快的方法,因为它使用javascripts自己的
getElementById
实现


在我的机器上(Win8,FF16.0.2),属性选择器的速度93%

第二个选择器将更快,因为它直接映射到
文档。getElementById


您可以检查结果

要获得最快的结果,您必须在jquery对象中包装js getElementById:

$(document.getElementById('myid'));

请参见

,因为按ID选择单个元素是一个性能问题<代码>:P
在我的情况下,这确实不是性能问题。。。但是,是否应该等到出现性能问题后再了解最佳实践?自由地使用
$(“#foo”)
,这从来都不是问题。在循环中执行查询时会出现性能问题。(缓存查询,
var$elems=$('.elems');
,然后在循环中使用
$elems
)另一个性能问题是大页面上的全局查询。如果
.elems
元素是
#foo
元素的后代,那么
$('.elems','#foo')
将比全局
$('.elems')
查询执行得更好。此外,避免长链,
$(“.thing”,“wrapper”)
的性能优于
$(“#wrapper ul li.thing”)
。我想这差不多涵盖了这一切<代码>:)
@PaulD.Waite如果证据很重要,请设置性能。这是一个众所周知的事实,当一个id单独传入时,jQuery在内部使用document.getElementByID。@Paul看一下jQuery源中的“Sizzle”函数,更不用说设置一个jsperf来测试选择单个元素是不值得的,在编写良好的代码中,这永远不会成为性能瓶颈。@KevinB虽然选择单个元素可能不是瓶颈,但与JSPerf相比,当选择器重复x千次时,它的速度(或缺少速度)是一个有趣的比较。