摘要

本文部分整理了JQuery性能提升的一些方法,内容综合自artzstudio,viralpatel,htmlgoodies等网站,希望对大家有所帮助。这些规则虽然简单,但如果不遵循就会影响程序执行效率,增加浏览器的负担。


1 优先使用ID选择器和以ID开头的选择器

//ID选择器性能最佳
$("#myDiv")
//以ID开头,提高效率
$("#myDiv .red")

2 类选择之前加元素选择提高效率

//元素(tag)选择器效率仅次于ID选择器,优于类(class)选择器
$("#myList li.active")

3 缓存JQuery对象

//错误,做了两次选择
$("#myList li").css('border','3px');
$("#myList li").css('color','red');
//缓存对象,提高效率
var $li = $("#myList li")
$li.css('border','3px');
$li.css('color','red');

4 利用链式命令,减少代码量

//链式命令,减少代码量
$("#myList li").css('border','3px')
.css('color','red');

5 使用子查询

//一次全局查找加两次子查询优于两次全局查找
var $list = $("#myList");
var $actives = $list.find('li.active');
var $in_actives = $list.find('li.in_active');

6 减少DOM的操作次数(DOM操作很慢)

//操作一次DOM,而不要操作100次
var lis = "";
for (var i=0, i<100; i++) {
lis += '<li>' + i + '</li>';
}
$('#myList').html(lis);

7 许多节点调用相同的函数时,利用事件委托

//效率较低
$('#myList li').bind('click', function(){
});
//效率较高
$('#myList').bind('click', function(e){
if ($(e.target).nodeName === 'LI') {
}
});

8 把不重要的功能(如拖放,效果等)放在$(window).load执行

//不要把所有都放在$(document).ready中
$(window).load(function(){
// 在页面所有对象加载完执行
});

9 较长的字符串拼接不要使用concat(),要使用join()

//join()比concat()效率更好
var list_items = [];
for (var i=0; i<=10; i++) {
list_items[i] = '<li>Item '+i+'</li>';
}
$('#myList').html(list_items.join(''));

10 使用for循环,不要使用$.each循环

//js原生方法效率更好
var js_array = new Array ();
for (var i=0; i<10000; i++) {
js_array[i] = i;
}

11使用元素前,先检查其是否存在

//检查id为myDiv的元素是否存在
if($("#myDiv").length) {
}

12 函数总是返回false

$('#myDiv').click (function () {
return false;
});

13 使用html5的data属性

//<div id="myDiv" data-value="111"></div>
$("#myDiv").data("value");

14 使用最新的版本及CDN

15 压缩你的JS代码

16 保持代码规范整洁

最新文章

  1. js实现上下滑动侧边栏
  2. mongoengine
  3. [转]连续创建多个Oracle触发器失败,单个创建才成功的解决方法
  4. Codeforces Round #250 (Div. 1) D. The Child and Sequence (线段树)
  5. LeetCode 11
  6. (转载)HTTP URL
  7. 设置将 Microsoft Azure 的网络基础结构以支持设置为灾难恢复站点
  8. Delphi中TFlowPanel实现滚动条效果
  9. JAVA学习之动态代理
  10. vs2008中xlslib与libxls库的编译及使用
  11. ORACLE透明网关访问SQL Server配置总结
  12. [译]Ocelot - Service Discovery
  13. Java开发笔记(六十六)映射:HashMap和TreeMap
  14. linux下的crontab安装及简单使用
  15. SQL Server 跨网段(跨机房)通过备份文件初始化复制
  16. centos下安装配置mongodb
  17. 11g等待事件之library cache: mutex X
  18. Scala_标识符
  19. 基于神念TGAM的脑波小车(2)
  20. 用ELK搭建简单的日志收集分析系统【转】

热门文章

  1. Xamarin XAML语言教程构建ControlTemplate控件模板 (二)
  2. [USACO Special 2007 Chinese Competition]The Bovine Accordion and Banjo Orchestra
  3. Codeforces 785D Anton and School - 2(组合数)
  4. Exercise02_09
  5. 让IE浏览器支持HTML5
  6. Android Studio使用过程中Java类突然报红,但项目可运行解决方案
  7. [Git] Git 的origin和master分析
  8. coffeescript 1.6.3使用帮助
  9. list 组合,模糊查询llist 数据(不走数据库)
  10. Rails生成随机字符串及加解密