Javascript 选择器:Id与上下文
我使用jQuery 我读了很多关于选择器性能和优化AJAX应用程序的文章。我希望提高我的选择器性能。我知道所有jquery性能提示。我还没有找到一个确切的答案。我几乎使用了当前所有的jquery性能提示,但我的应用程序似乎仍然有点滞后 所以,为了优化,我从选择器开始 我的问题是:从上下文到目标id的降序是否比只针对id更快?我看不出有多大区别 例如: 是 快于Javascript 选择器:Id与上下文,javascript,jquery,performance,jquery-selectors,css-selectors,Javascript,Jquery,Performance,Jquery Selectors,Css Selectors,我使用jQuery 我读了很多关于选择器性能和优化AJAX应用程序的文章。我希望提高我的选择器性能。我知道所有jquery性能提示。我还没有找到一个确切的答案。我几乎使用了当前所有的jquery性能提示,但我的应用程序似乎仍然有点滞后 所以,为了优化,我从选择器开始 我的问题是:从上下文到目标id的降序是否比只针对id更快?我看不出有多大区别 例如: 是 快于 $('#childId'); 提前感谢。根据,使用更少、更直接的选择器更快#id比#id#child好,至少在css中是这样。当您通
$('#childId');
提前感谢。根据,使用更少、更直接的选择器更快
#id
比#id#child
好,至少在css中是这样。当您通过“id”进行选择时,上下文并不重要,因为引擎无论如何都要调用getElementById()
。上下文语义当然很重要,但检查应该非常快。(我想从这个角度来看,上下文应该稍微慢一点,但如果它对页面有实际意义,你就不能停止这样做。)不确定你上面描述的语法是否有用,但在第5条规则中确实指出使用子查询更快(这是有意义的)。。。不过,他们使用$higherElm.find()语法进行了演示
在您的示例中——因为它直接映射到getElementById,这是一个本机函数调用——我认为您不会看到太多改进。但是,以元素集为目标的选择器(因此循环)可能会看到一些或主要的好处。如中所示,
$('#id')
只做document.getElementById
,而$('#id',context)
做$(context)。查找('#id')
。所以第一个更快。选择ID是绝对最快的选择
添加任何其他内容只会减慢速度。您是否尝试过评测您的应用程序?除非你看到实际的瓶颈在哪里,否则你可能会进行优化,几乎没有什么好处。是的,大多数的罪魁祸首是jquery方法,比如draggable和resizeable、CSS、CLASS,以及其他一些没有直接调用的jquery方法。这篇文章主要是为了找出应该使用哪种id选择器方法(我知道这不会有多大区别)。。。这没什么错。另外,并不是说你不知道这一点,试着从整体上考虑性能结果。一个特定的API可能会很慢,但要真正解决性能问题,可能需要考虑调用该API的原因,并找到避免频繁调用该API的机会。性能作品与其说是一门科学,不如说是一种艺术形式,而性能工具正是如此,工具,就像油漆的颜色:)它们在寻找不太具体的元素时速度更快。按id查找元素时,
getElementById
的速度非常快,而上下文正好挡住了它的去路。是的。此外,由于$('#id',context)
总是以调用$(context.find('#id')
(甚至可能是context.find('#id')
如果context
已经是jQuery对象-不确定/记不起来,但它不会更改以下内容…)您可以使用$.find()
版本,速度略快。
$('#childId');