选择器和性能

是否有任何好处的表现时,我做了在MooTools的下面(或任何框架,真的)?:

var elem = $('#elemId'); elem.addClass('someClass'); elem.set('some attribute', 'some value');

等等,等等,基本上,我更新的某些元素有很多的DOM,如果在内存中创建一个变量,用在需要的时候比我更想知道:

$('#elemId').addClass('someClass'); $('#elemId').set('some attribute', 'some value');

的变化$('#elemId')是所有的地方,在各种不同的功能。

--------------解决方案-------------

斯宾塞

这就是所谓的缓存,这是最好的做法之一。

当你说

$('#elemId');

它会去查询DOM每次,所以如果你说

var elem = $('#elemId');

ELEM充当缓存元素,并提高性能很多。

这是在IE男人味有用,因为它的内存泄漏问题的探析和所有

准备这个文件是真的好

http://net.tutsplus.com/tutorials/javascript-ajax/14-helpful-jquery-tricks-notes-and-best-practices/

这取决于你如何查询DOM。 通过ID查找是非常快。 其次最重要的是CSS类。 所以只要你只有一个ID(不包含一个id一个复杂的选择器)这样做,不应该有太大的好处。 但是,如果你使用任何其他选择,缓存是要走的路。

http://code.google.com/speed/page-speed/docs/rendering.html#UseEfficientCSSSelectors

https://developer.mozilla.org/en/Writing_Efficient_CSS

你第一种方法是快那么你的第二个方法,因为你“缓存”的搜索#elemId

意思是调用addClassset不需要在DOM为您额外的元素查找。

然而! 您可以链接函数调用:

$('#elemId').addClass('someClass').set('some attribute', 'some value');

根据应用程序cachinglinking可能会更好地工作,但绝对不是在同一块相同的顺序查找。

根据不同的情况,缓存可以更快地高达99%,那么使用jQuery对象每次可以。 在这种情况下,你提出它不会太大的差别。 如果你打算使用的选择很多时候,你一定要缓存对象作为一个变量,因此它不会让你运行它创建每次。

类似的问题,使用$此,而不是$(本)提供增强性能的不回答?

检查性能日志http://jsperf.com/jquery-this-vs-this

您正在使用一个局部变量来缓存一个潜在的慢查找的价值考虑。

如何缓慢是调用本身呢?如果它的速度快,缓存不会有太大的差别。 如果是缓慢的,然后在高速缓存的第一个电话。 选择在他们的cost--显著变化只是想想代码必须多细的元素。 如果它是一个ID,然后在浏览器提供快速访问,而类和节点我需要完整的DOM扫描。 检查出的jQuery(灒)选择的分析得到的这些感。

你可以连来电?考虑“链”方法调用在可能的情况。 这提供了效率而不引入另一个变量。

对于你的榜样,我会写:

$('#elemId').addClass('someClass').set('some attribute', 'some value');

如何代码读取?通常,如果同样的方法将被调用多次,这是更清晰晾干起来,并使用一个局部变量。 读者然后理解的意图better--你不要强迫他们扫描所有的jQuery的调用,以验证它们是相同的。 顺便说一句,一个相当标准的约定是命名变量的jQuery开始以$ - 这是合法的Javascript--作为

var $elem = $('#elem');
$elem.addClass('someClass');

希望这可以帮助。

分类:JavaScript的 时间:2015-03-15 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.694 (s). 10 q(s)