它更快从缓存选择器遍历DOM,而不是发现DOM中ID'd元素?(Is it faster t

2019-09-17 00:05发布

有很多的关于元素是否发现是通过class和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对象。 我注意到有很多我的代码,我倾向于做前一种方法(因为它可以借给自己更加动态的),但我一直好奇,如果它是更快地做到这一点,后者的方式。

谢谢

Answer 1:

我认为,缓存选择与否,它会更快使用id选择。 ID选择是非常直接的字典查找VS它就像一本字典查找的缓存/最接近的组合,其次是树遍历。

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

最快的查询将与本地documentGetElementById函数来完成。

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


文章来源: Is it faster to traverse the DOM from a cached selector than to find an ID'd element in the DOM?