前端性能优化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" ...
随机推荐
- spring 注解方式配置Bean
Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件特定组件包括: @Component:基本注解,标示了一个受Spring管理的Bean组件 @Respository:标识 ...
- Apache POI
Apache POI 用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"Po ...
- GUI TextField
GUI.TextField public static function TextField(position: Rect, text: string): string; public stati ...
- node 当中的 cnpm和npm 的区别和使用
在安装nodejs之后会有npm命令 打开命令符输入之后 输入node -v(记得-v前空格)查看版本信息 如果显示出来了就说明安装成功 然后 npm 可以安装node插件 cnpm使用的是淘宝网 ...
- 调用惯例Calling Convention (或者说:调用约定)
调用惯例影响执行效率,参数的传递方式以及栈清除的方式. 调用惯例 参数传递顺序 谁负责清除参数 参数是否使用暂存器 register 从左到右 被调用者 是 pascal 从左到右 被调用者 否 ...
- C++ 虚函数 、纯虚函数、接口的实用方法和意义
也许之前我很少写代码,更很少写面向对象的代码,即使有写多半也很容易写回到面向过程的老路上去.在写面向过程的代码的时候,根本不管什么函数重载和覆盖,想到要什么功能就变得法子的换个函数名字,心里想想:反正 ...
- Query DSL(1)
https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl.html Query DSL GET _search { & ...
- 从入门到精通之Boyer-Moore字符串搜索算法详解
本文讲述的是Boyer-Moore算法,Boyer-Moore算法作为字符串搜索算法,兴趣之下就想了解这个算法,发现这个算法一开始还挺难理解的,也许是我理解能力不是很好吧,花了小半天才看懂,看懂了过后 ...
- Docker入门之七Dockerfile
Dockerfile是一个文本格式的配置文本,可以使用它来创建自定义的镜像.首先我们可以先看一个dockerfile是什么样子.这里可以有一个网站不错:http://dockerfile.github ...
- 计蒜客 2017 NOIP 提高组模拟赛(四)Day1 T2 小X的密室
https://nanti.jisuanke.com/t/17323 小 X 正困在一个密室里,他希望尽快逃出密室. 密室中有 N 个房间,初始时,小 X 在 1号房间,而出口在 N号房间. 密室的每 ...