前端性能优化jQuery性能优化
一、使用合适的选择器
$("#id");
1.使用id来定位DOM元素无疑是最佳提高性能的方式,因为jQuery底层将直接调用本地方法document.getElementById();如果这个 方式不能直接找到你需要的元素,那么你可以考虑调用find()方法,代码如下:
$("#domo").find("div");
使用以上代码可以有效的缩小你定位的DOM元素。
2.标签选择器的性能也是不错的,它是性能优化的第二选择。
二、缓存对象
在写代码时,我们一般喜欢这样写:
$("#domo p").bind("click",function(){.....});
$("#domo p").css("color","green");
$("#domo p").fadeIn(1000);
但是这样写的后果是:jQuery会在创建每一个选择器的过程中,查找DOM,创建多个jQuery对象。
比较好的书写方式如下:
var $yuki=$("#domo p");//缓存变量
$yuki.bind("click",function(){......});
$yuki.css("color","green");
$yuki.fadeIn(1000);
//上面的代码还可以改善一下,如下
var $yuki=$("#domo p");
$yuki.bind("click",function(){
//...
}).css("color","green").fadeIn(1000);
三、循环时的DOM操作
我们来看一段代码:
var yuki=[...];//假设这里是100个独一无二的字符串
var $mylist=$("#mylist");//jQuery选择到<ul>元素
for(var i=0;i<$mylist.length;i++){
$mylist.append("<li>"+yuki[i]+"</li>");
}
以上代码,我们将每一个新添加的标签元素作为一个节点添加到容器ID中,每一次循环,都会调用到$mylist
所以更好的方式是尽可能的减少DOM操作,代码如下:
var yuki=[...];
var $mylist=$("#mylist");
var result="";
for(var i=0;i<$mylist.length;i++){
result+="<li>"+yuki[i]+"</li>";
}
//我们将整个元素字符串在插入DOM元素(ul)之前全部创建好,这样大大的减少了DOM操作
$mylist.html(result);
四、事件代理
每一个JavaScript事件都会冒泡到父级节点。当我们需要给多个元素调用同一个函数时这点会很有用。比如,我们要为一个表格绑定这样的行为:点击td后,把背景色设置为红色,代码如下:
$("#myTable td").click(function(){
$(this).css("background","red");
})
假设有100个td元素,在使用以上方式的时候,你绑定了100个事件,这将带来很负面的性能影响,有没有什么更好的方式呢?
代替这种效率很差的元素事件监听的方法就是:你只需向它们的父节点绑定一次事件,然后通过event.target获取到点击的当前元素。
代码如下:
$("#myTable").click(function(e){
var $clicked=$(e.target);//e.target捕捉到触发的目标元素
$clicked.css("background","red");
})
还有一种方式是使用on() ,代码如下:
$("#myTable").on("click","td",function(){
$(this).css("background","red");
})
前端性能优化jQuery性能优化的更多相关文章
- jQuery性能优化
1. 优化选择器执行的速度 优先使用ID与标记选择器 在jQuery中,访问DOM元素的最快方式是通过元素ID号,其次是通过元素的标记.因为前者源于JavaScript中的document.getEl ...
- jQuery性能优化篇
jQuery高级技巧——性能优化篇 阅读目录 通过CDN(Content Delivery Network)引入jQuery库 减少DOM操作 适当使用原生JS 选择器优化 缓存jQuery对象 定义 ...
- Web前端性能优化之图片优化
我自己的Blog:http://blog.cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过 ...
- jQuery性能优化指南(转载)
现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, ...
- jQuery性能优化的28个建议
我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来.我也做了一个jQuery性能优化的简明样式表,你可 ...
- web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识
web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识 ——不会WPO.SEO的前端工程师不是好码农 作为一名web前端工程师,除了要实现上级的要求,满足其所需要的功能,还要在平时 ...
- jQuery:jQuery性能优化28条建议
http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...
- jquery性能优化的十种方法
jquery性能优化的十种方法 有时候我们在书写jquery的时候,为了书写代码方便,往往忽略了程序执行过程中,给客户端带来的压力.随之而来的就是在某些低端浏览器或者低端电脑上运行速度缓慢,甚至无法运 ...
- jQuery 性能优化技巧
原文地址:jQuery 性能优化技巧 博客地址:http://www.extlight.com 一.使用最新版本 jQuery 类库 二.合理使用选择器 # 推荐使用 $("#id" ...
随机推荐
- 警惕Java编译器中那些“蜜糖”陷阱
一.前言 随着Java编译器不断地向前发展,它为程序员们提供了越来越多的“蜜糖”(compiler suger),极大地方便了程序的开发,例如,foreach的增强模式,自动拆箱与装箱以及字符串的连接 ...
- 原型模式和基于原型继承的js对象系统
像同样基于原型编程的Io语言一样,javascript在原型继承方面,实现原理和Io非常类似,javascript也遵守这些原则 所有数据都是对象 要得到一个对象,不是通过实例化类,而是找到一个对象作 ...
- python 库之lxml安装 坑一个
error: command 'C:\\Users\\Admin\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python ...
- pygame_第一个窗口程序
####可以使用python自带的IDLE交互式开发,也可以借助其他的编辑器,我这里采用的pycharm编辑器 1.导入我们所需要的模块 import pygame,sys --导入我们需要的模块 ...
- Gradient Boost 算法流程分析
我们在很多Gradient Boost相关的论文及分析文章中都可以看到下面的公式: 但是,对这个公式的理解,我一直也是一知半解,最近,终于下决心对其进行了深入理解. 步骤1:可以看作优化目标的损失函数 ...
- Next Greater Element I
You are given two arrays (without duplicates) nums1 and nums2 where nums1's elements are subset of n ...
- h5 meta学习
定义针对搜索引擎的关键词:<meta name="keywords" content="meta,red" /> 定义对页面的描述:<meta ...
- 利用ASP.netCore自带DI(DependencyInjection)实现批量依赖注入
ASP.net Core自带DI(依赖注入),用法如下: services.AddScoped(typeof(IProductService), typeof(ProductService)); 如果 ...
- PHP CodeBase: 生成N个不重复的随机数
有25幅作品拿去投票,一次投票需要选16幅,单个作品一次投票只能选择一次.前面有个程序员捅了漏子,忘了把投票入库,有200个用户产生的投票序列为空.那么你会如何填补这个漏子? <?php /* ...
- 面向对象编程笔记--static
通过static方法,提供静态的不需要实例化即可访问的方法或属性.所有的调用者可以使用同一个类(不实例化)或对象(只实例化一次),可以应用的场景: 1)各个调用者共享数据,协同工作. 2)对象只可以实 ...