我使用jQuery。
我一直在阅读很多关于选择器性能和优化我们的AJAX应用程序的内容。我希望提高我的选择器性能。我知道所有jquery性能提示。我没有找到问题的确切答案。我正在使用几乎所有当前的jquery性能提示,但我的应用程序似乎仍然相当滞后。
所以,为了优化我从选择器开始。
我的问题是:从上下文降序到定位ID的速度要快于定位ID吗?我不能说很多不同。
示例:
时
$('#childId', $higherElm);
比仅仅
更快$('#childId');
????
提前致谢。
答案 0 :(得分:3)
正如jQuery source所示,$('#id')
仅执行document.getElementById
,而$('#id', context)
执行$(context).find('#id')
。所以第一个更快。
答案 1 :(得分:1)
根据this article,拥有更少,更直接的选择器会更快。 #id
优于#id #child
,至少在css ...
答案 2 :(得分:1)
选择ID是您可以做的绝对最快的选择。
添加任何其他东西只会减慢速度。
答案 3 :(得分:0)
当您选择“id”时,上下文无关紧要,因为引擎无论如何都会调用getElementById()
。当然语境在语义上很重要,但检查应该非常快。 (我认为,从那个角度来看,上下文应该稍微较慢,但如果它对你的页面有实际意义,你就不能停止这样做。)
答案 4 :(得分:-1)
不确定上面描述的语法是否有益,但是在http://www.artzstudio.com/2009/04/jquery-performance-rules/它在规则#5中确实表明使用子查询更快(这是有意义的)......他们使用$来演示它但是,更高的Elm.find()语法。
在你的例子中 - 因为它直接映射到getElementById这是一个本机函数调用 - 我认为你不会看到很多改进。但是,以元素集为目标(因此循环)的选择器可能会看到一些或主要的好处。