从缓存的选择器遍历DOM比在DOM中查找ID'd元素更快吗?

时间:2012-05-03 04:08:13

标签: jquery optimization dom-traversal

关于通过类或id或其他选择器查找元素是否更快,存在很多问题。我对此不感兴趣。我想知道你是否有:

var link = $(this); //let's say you're in a click handler

通过执行

来查找容器是否更快
var container = link.closest('.container'); //assume container is .container

var container = $('#mycontainer'); //assume same element as above

我问这个问题不仅仅是针对上面的特定场景(好吧,是的,对于这种场景也是如此),而是针对缓存遍历与创建具有ID的新jQuery对象。我注意到在我的很多代码中我倾向于使用前一种方法(因为它可以使其更具动态性),但我总是好奇,如果以后一种方式更快地做到这一点。

由于

1 个答案:

答案 0 :(得分:2)

我认为,缓存选择器与否,使用id选择器会更快。 ID选择器几乎是直接字典查找与缓存/最接近的组合,就像字典查找,然后是树遍历。

http://jsperf.com/traverse-from-cached-selector-vs-id-selector

使用原生documentGetElementById函数完成最快的查找。

var container = $(document.getElementById('MyContainer'));