G-W*_*Wiz 19

  1. 首选仅通过ID进行简单选择,然后仅通过标签名称进行简单选择.通过类名或CSS选择器选择需要jQuery来遍历DOM,而ID和标记映射到"本机"浏览器DOM函数(getElementById和getElementByTagName).
  2. 尽可能地缓存 jQuery对象.
  3. 将操作范围限定为根jQuery对象.不是单独选择元素,而是选择一个共同的祖先元素,并使用该find函数查找元素子范围内的元素.如果你正在对共同的祖先进行一些操作,这真的是最佳的; 否则,找到祖先并缓存它的开销可能超过范围遍历的好处.
  4. 不要使用$.each(),使用for(;;)替代.它的速度提高了十倍以上.

  • 这是来自jQuery文档[http://docs.jquery.com/Utilities/jQuery.each]的$ .each()示例之一的for(;;)for:for(var i = 0;我<arr.length; i ++){var id = arr [i]; $("#"+ id).text("我的id是"+ id +"."); if(id =="four")break; } (2认同)
  • 当然我们都知道减少的while循环可以比这更快!每个人的美丽是调用函数的上下文(例如,= =你的元素). (2认同)

Ale*_*ton 10

Paul Irish最近在2009年jQuery大会上做了关于性能的演讲.这些幻灯片是我见过的最全面的幻灯片.

http://paulirish.com/perf/
http://www.slideshare.net/paul.irish/perfcompression


dov*_*ove 8

谷歌CDN参考文件,因此加载速度更快.


Cli*_*ote 8

而不是做:

$("#foo").addClass('test');
$("#foo").removeClass("bar");
$("#foo").slideUp('slow');
Run Code Online (Sandbox Code Playgroud)

你可以做:

$("#foo").addClass('test').removeClass('bar').slideUp('slow');
Run Code Online (Sandbox Code Playgroud)

  • 或者如果您不能一次完成所有操作,请将$("#foo")放在变量中并使用它而不是每次都重新创建$("#foo"). (3认同)
  • @jpartogi:jQuery每次将选择器传递给$()时都会创建一个新对象,但是因为它的方法返回`this`,你可以像这样堆栈它们.这里的技巧是不为同一个选择器创建三个不同的对象. (2认同)