JQuery教学之性能优化


Posted in Javascript onMay 14, 2014

jQuery是一款非常优秀的javascript框架,当我们使用到jQuery后就再也不想回到javascript时冗长的代码,那么jQuery的优化就摆在了我们的面前。那么我们优化JQuery应该从那些方面入手呢?

        1、使用最新版本的jQuery

        新版本相对于旧版本会做性能上的改进,还有就是添加新功能。

        2、选择器的使用

        我们通常会使用id选择器、class选择器、元素选择器、伪类选择器和元素选择器。在使用时我的建议是最好使用id选择器,其次是class选择器>元素选择器>Element选择器>伪类选择器。

        说到选择器时,不可必选的要插上一句,在使用选择器查最好是从具有id的父元素开始逐级向下查找。

        3、不要过度的使用jQuery

        记住一句话原生的是最快的。jQuery是write less,do more(写的更少,做的更多)。

        4、做好缓存

        当时要重复使用一个节点是可以使用一个变量存放,在使用时再调用。避免重复获取节点,降低效率。

var inputSelect = $("#head .head_right input");
inputSelect.find("a");
inputSelect.find("i");

        5、使用链式操作

        jQuery的一大亮点,就是可以使用链式操作。

$("#content").find(".div").eq(2).html("Hello World");

        6、事件委托

        当需要多个同级元素执行一种类型的事件时,可以采用事件委托的方式。例:

<div id="content">
    <div><div>
    <div><div>
    <div><div>
    <div><div>
    <div><div>
<div>

    当每个class="div"的div都具备一个click事件的时候我们可以采取事件委托,

$("#content").on("click","div",function(){    
    $(this).css("color","#ff5500");
  });

        7、正确处理循环

         循环是一种较耗时的操作,如果可以使用选择器直接选中元素,就不要使用循环去一个个的遍历元素。

        Javascript的原生方法for和while,要比jQuery的each()快。所以应该优先使用原生的方法。

        8、减少JQuery对象的生成

        生成Query对象就会生成对应的属性和方法,比较占用资源。所以尽量减少jQuery对象的生成。

        9、变量的作用域

        当一个变量不需要 在多个函数调用时,应该把变量放在函数内,减少代码执行时查找代码的时间。

        10、将某些函数推迟到$(window).load执行

        $(document).ready确实好用,但是它可以再页面渲染时,其他元素还没有下载完成就执行。

        11、脚本的合并

        脚本都是一一被加载的,减少脚本数量也能提高效率。

        12、元素封装

        当给一个节点插入一个内容,可以先把内容进行封装,再插入。

var content = "";
$("#head").html(content);

        另外就是进行js文件的压缩。

        随着jQuery的不断被使用,越来越多的优化方法会被发现。

Javascript 相关文章推荐
js判断游览器类型及版本号的代码
May 11 Javascript
js动态切换图片的方法
Jan 20 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
AngularJS 实现按需异步加载实例代码
Oct 18 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
Bootstrap表单布局样式代码
May 31 Javascript
vue.js学习之vue-cli定制脚手架详解
Jul 02 Javascript
Iphone手机、安卓手机浏览器控制默认缩放大小的方法总结(附代码)
Aug 18 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
Dec 27 Javascript
layui监听下拉选框选中值变化的方法(包含监听普通下拉选框)
Sep 24 Javascript
jQuery实现的分页插件完整示例
May 26 jQuery
解决VUEX的mapState/...mapState等取值问题
Jul 24 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
May 14 #Javascript
javascript 中that的含义示例介绍
May 14 #Javascript
table insertRow、deleteRow定义和用法总结
May 14 #Javascript
jQuery 中国省市两级联动选择附图
May 14 #Javascript
全面兼容的javascript时间格式化函数(比较实用)
May 14 #Javascript
js实现图片拖动改变顺序附图
May 13 #Javascript
javascript判断是否按回车键并解决浏览器之间的差异
May 13 #Javascript
You might like
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
模仿OSO的论坛(二)
2006/10/09 PHP
php 修改zen-cart下单和付款流程以防止漏单
2010/03/08 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
JavaScript 判断浏览器类型及版本
2009/02/21 Javascript
jquery 年会抽奖程序
2011/12/22 Javascript
javascript中innerText和innerHTML属性用法实例分析
2015/05/13 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
[42:32]Secret vs Optic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
深入理解python函数递归和生成器
2016/06/06 Python
Python实现获取照片拍摄日期并重命名的方法
2017/09/30 Python
django中上传图片分页三级联动效果的实现代码
2019/08/30 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
python能开发游戏吗
2020/06/11 Python
python + selenium 刷B站播放量的实例代码
2020/06/12 Python
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
ORACLE十问
2015/04/20 面试题
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
会计自我鉴定
2013/11/02 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
保安队长职务说明书
2014/02/23 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
2014组织生活会方案
2014/05/19 职场文书
岗位安全生产责任书
2014/07/28 职场文书
英文产品推荐信
2015/03/27 职场文书
表扬信范文
2015/05/04 职场文书
责任书范本大全
2015/05/11 职场文书
我的长征观后感
2015/06/09 职场文书
2015小学教育教学工作总结
2015/07/21 职场文书
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers