有哪些提高jQuery性能的快速提示?
有哪些提高jQuery性能的快速提示?
- 首选仅通过ID进行简单选择,然后仅通过标签名称进行简单选择。 通过类名或CSS选择器进行选择需要jQuery来遍历DOM,而ID和标记映射到“本机”浏览器DOM函数(getElementById和getElementByTagName)。
- 尽可能地缓存 jQuery对象。
- 将操作范围限定为根jQuery对象。 不是单独选择元素,而是选择一个共同的祖先元素,并使用
find
函数查找该元素子元素范围内的元素。 如果你正在对共同的祖先进行一些操作,这实际上只是最佳的; 否则,查找祖先和缓存它的开销可能超过范围遍历的好处。 - 不要使用
$.each()
,而是for(;;)
。 它的速度提高了十倍以上。
Paul Irish最近在2009年jQuery大会上做了关于表现的演讲。这些幻灯片是我见过的最全面的幻灯片。
http://paulirish.com/perf/
http://www.slideshare.net/paul.irish/perfcompression
谷歌CDN上的参考文件,因此加载速度更快。
而不是做:
$("#foo").addClass('test'); $("#foo").removeClass("bar"); $("#foo").slideUp('slow');
你可以做:
$("#foo").addClass('test').removeClass('bar').slideUp('slow');
它总是适用于常见的javascript:始终缓存,缓存,缓存,例如:
var $this = $(this); $this.css('width', parseInt($this.css('width')) + 20 + 'px');
实际上不可能提高jQuery的速度,它实际上取决于代码的效率,浏览器的JS解释器的效率以及运行代码的计算机的速度。 您可以尝试重写jQuery以提高效率,但这需要时间,而且很可能已经非常优化。
确保效率的最佳方法之一是确保*选择器尽可能具体地针对元素/类等。
* $(选择)
我认为你要求代码优化,但由于性能高度依赖于使用的JavaScript-Engine,我想提一下Google Chrome Frame 。
知道何时使用纯JavaScript而不是JQuery方法。
jQuery是JS + DOM的补充,不是它的完全替代品。 您不必为您编写的每行代码使用jQuery。 没有它,有些东西会更简洁地表达出来; 没有它,很多事情都会更快。 了解DOM提供的内容,这样您就不会编写我在此处发布的一些较为简单的示例。
例如。:
var ix= $('#'+selectname).children().index($('#'+selectname+' option:selected'));
更快,更容易阅读,不会破坏ID中的意外字符:
var ix= document.getElementById(selectname).selectedIndex;