【发布时间】:2012-05-12 14:09:40
【问题描述】:
有很多关于通过 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 对象。我注意到在我的很多代码中,我倾向于使用前一种方法(因为它可以使自己更具动态性),但我一直很好奇用后一种方法是否更快。
谢谢
【问题讨论】:
-
我怀疑是后者更快,但你测试过吗?敲出一个测试工具很容易......
-
我不确定这些信息是否已经过时并在最新的 jQuery 迭代中得到纠正,但我很确定
.closest()比其他替代方案相对慢。 -
我实际上创建了一个jsperf:jsperf.com/cached-dom-traversal-vs-new-id-selection 看起来ID肯定是最快的,其次是按类查找。
标签: jquery optimization dom-traversal