JQuery 性能优化
一、合适的选择器
JQuery 选择器提供丰富的选择器来定位DOM元素,
基本选择器
#id、.class、element、*等;那他们哪个更高效呢?
第一选择:
$("#id")
第二选择:
$("p"),$("div")
第三选择(选择性使用) :
$(".class")
第四选择
$("[attribute =value"])
第五选择(伪选择器,其属于 JQuery 过滤选择器中的可见性过滤选择器)
$(":hidden")
PS:1、尽量选择Id选择器,
2、给选择器指定上下文
其类似于CSS选择器,CSS选择器中三大特性 --特殊性、继承、层叠中的特殊性:
1、对于选择器给定的各个ID属性值(#id):加上 0,1,0,0
2、对于选择器给定的各个类属性值(.class、属性选择、伪类如:visited、:link ) : 加上0,0,1,0
3、对于选择器给定的各个元素(element): 加上0,0,0,1
例子:html >body table tr[td="totals"] td ul > li 则为0,0,0,7+ 0,0,1,0 = 0,0,1,7;
li #answer 则为0,0,0,1 + 0,1,0,0 = 0,1,0,1
根据这种运算可以得出胜出规则:
比如:0,1,0,1 大于 0,0,1,7 ,则其特殊性越高。选择的优先级越高。
* 属于通配选择器,其是 0 特殊性
二、数组方式使用JQuery对象
在性能方面,建议使用for 或者 while 来处理,而不是$.each()
如:
$.each(array ,function (i)) {
array[i] = i ;
}
改为:
var array = new Array ();
for (var i = 0 ;i< array.length ;i++) {
array[i] = i;
}
三、事件代理
例子: 单击单元格,单元格变色
$('#table td").click(function()) {
$(this).css("backgroud","blue") ;
}
如果表格有100个td单元格,那么就绑定了100个事件,性能会很差。
可以使用事件代理:
$('#table").click(function(e)) {
var $clicked = $(e.target); // e.target 得到触发的目标元素
$clicked.css("backgroud","blue") ;
}
其只绑定一个事件,性能提高
四、join 拼接字符串
将数组转换为字符串
一般在长字符串时,这个性能提升才会明显
var array = [] ;
for(var i = 0 ; i< 100; i++){
array[i] = '<li>'+i+'</li>';
}
$("#list").html(array.join(' '));
可以联系Java中StringUtils 的Join(), 以及StringBulider,StringBuffer的用法比较使用。
五、使用原生的JS方法
常用判断一个多选框是否选中:
var $ck = $("#ck");
$ck.click(function()) {
if($ck.is(":checked")) {
alert("checked");
}
})
改为:
var $ck = $("#ck");
var ck = $ck.get(0); // JQuery 对象转化为DOM对象,其有2种方式 JQuert.get(0)或者JQuery[0]
$ck.click(function()) {
if(ck.checked)) {
alert("checked");
}
})
六、尽量使用JQuery优雅的链式操作
其可以减少对象的随意创建,也可以创建一个对象到全局环境,让其他函数function调用。
JQuery 性能优化的更多相关文章
- jQuery性能优化指南(转载)
现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, ...
- jQuery性能优化的28个建议
我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来.我也做了一个jQuery性能优化的简明样式表,你可 ...
- jQuery:jQuery性能优化28条建议
http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...
- jquery性能优化的十种方法
jquery性能优化的十种方法 有时候我们在书写jquery的时候,为了书写代码方便,往往忽略了程序执行过程中,给客户端带来的压力.随之而来的就是在某些低端浏览器或者低端电脑上运行速度缓慢,甚至无法运 ...
- jQuery 性能优化技巧
原文地址:jQuery 性能优化技巧 博客地址:http://www.extlight.com 一.使用最新版本 jQuery 类库 二.合理使用选择器 # 推荐使用 $("#id" ...
- jQuery性能优化和技巧
jQuery性能优化 ①使用最新版本的jQuery类库 ②使用合适的选择器 ③缓存对象 ④循环时的DOM操作 ⑤数组方式使用jQuery对象 ⑥事件代理 ⑦将你的代码转化成jQuery插件 ⑧使用jo ...
- 28个jQuery性能优化的建议
我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来.我也做了一个jQuery性能优化的简明样式表,你可 ...
- jQuery性能优化(转)
摘要:jQuery是我们经常使用的强大的JS类库,因此它的性能优化十分重要,下面就重几点来说明 原文作者:szyuxueliang 原文地址:http://www.cnblogs.com/yxl ...
- jQuery性能优化篇
jQuery高级技巧——性能优化篇 阅读目录 通过CDN(Content Delivery Network)引入jQuery库 减少DOM操作 适当使用原生JS 选择器优化 缓存jQuery对象 定义 ...
- jQuery性能优化38建议---最引人注目的用户体验!
一.需要注意的是的定义jQuery当变量被添加varkeyword 然而,这并不jQuery.整个javascript开发过程,所有需要注意,一定不要将其定义为下面的示例: $loading = $( ...
随机推荐
- [转]带花树,Edmonds's matching algorithm,一般图最大匹配
看了两篇博客,觉得写得不错,便收藏之.. 首先是第一篇,转自某Final牛 带花树……其实这个算法很容易理解,但是实现起来非常奇葩(至少对我而言). 除了wiki和amber的程序我找到的资料看着都不 ...
- POJ2723-Get Luffy Out(2-SAT)
题意:有m扇门,每个门上有两把锁,打开任意一个锁都可以打开这扇门.门要按顺序一个一个打开. 现在有n对不同的钥匙,每对钥匙只能用其中一个,问最多能打开多少门. 题解:对钥匙建图,门是限制条件来建边.每 ...
- Java内存管理原理及内存区域详解
一.概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间.Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下 ...
- ALAssetsLibrary学习总结
添加AssetsLibrary.framework 然后引入 #import <AssetsLibrary/ALAssetsLibrary.h> 一个获取所有图片的类 #import &l ...
- 使用CSS3和jQuery可伸缩的搜索条
使用CSS3和jQuery可伸缩的搜索条 helloweba.com 作者:月光光 时间:2013-12-09 21:23 标签: CSS3 jquery 搜索条在我们网站是必不可少的,尤其是在有限的 ...
- Winform- TreeView的使用例子
自动递归生成树,点击树节点的事件在treeView1_AfterSelect里编写,不多说了,直接上代码,备注在这里一下 public partial class Form1 : Form { pub ...
- CentOS6.5安装nginx及负载均衡配置
所有的安装包可以去以下地址下载,或者自行去官网下载,下面都有介绍. 所有安装包地址:http://download.csdn.net/detail/carboncomputer/9238037 原文地 ...
- SpringMVC学习 DispatcherServlet (转载)
3.1.DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现,提供spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring Io ...
- cocos2d-x 添加纹理自动回收机制
转自:http://www.cnblogs.com/lancidie/archive/2013/04/13/3019375.html 1.不是一个完整的模块,所以不提供完整代码,只提供思路和核心代码. ...
- Flex 自动获取焦点 监听全局键盘事件
在mxml里监听addedToStage事件 protected function application1_addedToStageHandler(event:Event):void { this. ...