3

有很多关于通过 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 对象。我注意到在我的很多代码中我倾向于使用前一种方法(因为它可以使自己变得更加动态),但我总是很好奇后一种方法是否更快。

谢谢

4

1 回答 1

2

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

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

最快的查找将使用本机 documentGetElementById 函数完成。

var container = $(document.getElementById('MyContainer'));
于 2012-05-03T04:22:00.387 回答