jQuery 性能优化技巧
2024-08-27 14:27:54
原文地址:jQuery 性能优化技巧
博客地址:http://www.extlight.com
一、使用最新版本 jQuery 类库
二、合理使用选择器
# 推荐使用
$("#id")
# 可以使用
$("p"),$("span")
# 可以使用
$(".class")
# 尽量避免
$("[attribute=value]")
# 尽量避免
$(":hidden")
三、使用缓存对象
场景:修改某个按钮的文本和颜色
# 不好的写法
$("#btn").text("重置");
$("#btn").css("color","red");
# 优化的写法
var $btn = $("#btn");
$btn.text("重置").css("color","red");
四、循环时减少对DOM的操作
场景:往 <ul> 中添加 <li> 菜单项
# 不好的写法
var $ul = $("#menu");
for(var i=0; i<6; i++) {
$ul.append("<li>菜单"+i+"</li>")
}
# 优化的写法
var $ul = $("#menu");
var html = "";
for(var i=0; i<6; i++) {
html += "<li>菜单"+i+"</li>";
}
$ul.append(html);
五、使用事件代理
场景:给 <ul> 里的所有 <li> 绑定点击变色事件
# 不好的写法
$("ul li").on("click",function() {
$(this).css("color","red");
});
# 优化的写法
$("ul li").on("click",function(e) {
var $obj = $(e.target);
$obj.css("color","red");
});
六、将代码转成 jQuery 插件
七、使用 join() 拼接字符串
第四点的案例中,代码还可以进行优化
var $ul = $("#menu");
var arr = [];
for(var i=0; i<6; i++) {
arr.push("<li>菜单"+i+"</li>");
}
$ul.append(arr.join("");
八、合理利用 HTML5 的 data 属性
使用 data-* 属性来嵌入自定义数据。
<div id="user" data-age="26" data-gender="男">张三</div>
var user = $("#user");
var age = user.data("age");
var gender = $("#user").data("gender");
九、尽量使用原生的 JS 方法
第五点的案例中,可以如下优化
$("ul li").on("click",function(e) {
var $obj = $(e.target);
$obj.get(0).style.color = "red";
});
十、压缩 JS 代码
如有更多优化技巧,后续补充......
最新文章
- 【IOS】模仿";抽屉新热榜";动态启动页YFSplashScreen
- HTML基本标签
- Nodejs&#183;进程
- firefox 最新版地址栏后没有生成二维码的工具
- 黄聪:VS2010每次F5启动都重新编译但是没办法进入断点
- C#之使用AutoResetEvent实现线程的顺序执行
- HTML5入门6---视频播放按钮
- cocos2dx libiconv 转码
- Flex:CSS3布局利器
- VB热点答疑(2016.5.11更新Q4、Q5)
- html标和下标应用
- 数据结构:循环队列(C语言实现)
- 基于am3358的lcd输出
- day17-异常处理
- List、Set、Map的区别
- 一个萌新对redis的理解
- vue-element 动态单选多选全选
- bzoj1831 逆序对 (dp+树状数组)
- JWT ajax java spingmvc 简洁教程
- 解决mysql使用GTID主从复制错误问题
热门文章
- Diff Two Arrays
- T4模板的基本结构
- 什么是web?什么是web服务器?什么是应用服务器?
- H.264采集、编码、传输的流程
- Shell 命令行实现将一个站点页面全部下载到本地并替换其中链接的脚本
- JVM运行时数据区和垃圾回收机制
- Android 开发 Tip 17 -- 为什么getBackground().setAlpha(); 会影响别的控件?
- 层序遍历二叉树 完整层序重建二叉树 python
- 解决visual studio2017没有系统类和方法注释的问题
- keras channels_last、preprocess_input、全连接层Dense、SGD优化器、模型及编译