提升效率的JQUERY(转)
摘要
本文部分整理了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 保持代码规范整洁
提升效率的JQUERY(转)的更多相关文章
- paip.提升效率--数据绑定到table原理和流程Angular js jquery实现
paip.提升效率--数据绑定到table原理和流程Angular js jquery实现 html #--keyword 1 #---原理和流程 1 #----jq实现的代码 1 #-----An ...
- Android测试提升效率批处理脚本(三)
前言: 前面放出过几次批处理,这次只放一个环境检查的被管理员给打回来了,不得不再找找几个有含金量的放出来,请看正文~~~ 目录 1.Android环境检查 2.Android内存监控 3.模拟蓝牙手柄 ...
- Android测试提升效率批处理脚本(二)
前言: 前面放出过一次批处理,本次再放出一些比较有用的批处理(获得当前包名.查看APP签名信息等),好长时没来写博客了,简单化,请看正文,更多脚本尽请期待~~~(不定期) 目录 1.[手机录屏(安卓4 ...
- Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- Atitit.研发管理--提升效率--软件开发方法DSM总结o99
Atitit.研发管理--提升效率--软件开发方法DSM总结o99 1. 什么是DSM? 1 2. DSM使用的语言DSL 2 3. 模型的优点 2 4. DSM 跟与MDA区别 2 5. MDA的实 ...
- atitit groovy 总结java 提升效率
atitit groovy 总结java 提升效率 #---环境配置 1 #------安装麻烦的 2 三.创建groovy项目 2 3. 添加 Groovy 类 2 4. 编译运行groovy类 ...
- paip.提升效率--批量变量赋值 “多元”赋值
paip.提升效率--批量变量赋值 "多元"赋值 ##石麻是批量变量赋值. 为一组变量赋值. 例子 1 <?php $my_array = array("Dog&q ...
- paip.提升效率---filter map reduce 的java 函数式编程实现
#paip.提升效率---filter map reduce 的java 函数式编程实现 ======================================================= ...
- paip.提升效率--调试--日志系统日志参数含义---python
paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...
随机推荐
- 【bzoj1335】Radio Transmission
给你一个字符串,它是由某个字符串不断自我连接形成的.但是这个字符串是不确定的,现在只想知道它的最短长度是多少. 因为这个字符串是不断自匹配形成的我们可以很容易的想到,除了第一个字符串外,从第二个字符串 ...
- hdu1269(有向图强连通分量)
hdu1269 题意 判断对于任意两点是否都可以互相到达(判断有向图强连通分量个数是否为 1 ). 分析 Tarjan 算法实现. code #include<bits/stdc++.h> ...
- SHELL 在指定行的前/后插入指定内容
#如果知道行号可以用下面的方法 sed -i '88 r b.file' a.file #在a.txt的第88行插入文件b.txt awk '1;NR==88{system("cat ...
- websocket、文件上传
支持情况: 浏览器实现了websocket的浏览器:Chrome Supported in version 4+ Firefox Supported in version 4+ Internet Ex ...
- [CF983E]NN country
题意:给一棵树,有许多条巴士线路$(a_i,b_i)$(巴士在路径上每个点都会停车),多次询问从一点到另一点最少要坐多少次巴士 首先dfs一遍预处理出一个点向上坐$2^k$次巴士能到的最浅点,于是我们 ...
- [CF911A]Nearest Minimums
题目大意: 给你一个数列,问数列中最小数的最近距离. 思路: 直接模拟即可. #include<cstdio> #include<cctype> #include<alg ...
- python中的else子句
在一般的语言中else子句一般是紧跟在if 子句后面,但是python语言中else子句可以不跟在if子句后面,请看下面代码: >>> for n in range(2, 10): ...
- C# 6.0语法新特性体验(二)
之前我在文章通过Roslyn体验C# 6.0的新语法中介绍了一些C# 6.0的语法特性,现在随着Visual Studio 14 CTP3的发布,又陆续可以体验一些新的特性了,这里简单的介绍一下之前没 ...
- VisualSVN设置提交时必须输入log信息
在别人的基础上修改的: 自己在Windows上用VisualSVN搭了个服务器,默认提交代码是可以不填任何信息,这可不是我所期望的,于是找到了下面的解决方案: 在VisualSVN的管理控制台中可以设 ...
- Coherence装载数据的研究 - Invocation Service
这里验证第三个方法,原理是将需要装载的数据分载在所有的存储节点上,不同的地方是利用了存储节点提供的InvocationService进行装载,而不是PreloadRequest, 原理如图 前提条件是 ...