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 相关文章推荐
使用JavaScript switch case 另类写法
Mar 14 Javascript
基于Jquery的温度计动画效果
Jun 18 Javascript
基于jquery的15款幻灯片插件
Apr 10 Javascript
js使用正则实现ReplaceAll全部替换的方法
Aug 22 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
Mar 03 Javascript
浅谈document.write()输出样式
May 07 Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 Javascript
解决vue-cli中stylus无法使用的问题方法
Jun 19 Javascript
Vue 样式绑定的实现方法
Jan 15 Javascript
mocha的时序规则讲解
Feb 16 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
使用typescript构建Vue应用的实现
Aug 26 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
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
jquery 跳到顶部和底部动画2句代码简单实现
2013/07/18 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
js实现分割上传大文件
2016/03/09 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
2018/09/13 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
Python实现深度遍历和广度遍历的方法
2019/01/22 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
RetroStage德国:复古服装
2019/02/03 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
如何理解transaction事务的概念
2015/05/27 面试题
给孩子的新年寄语
2014/04/08 职场文书
赔偿协议书范本
2014/04/15 职场文书
世界读书日的活动方案
2014/08/20 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫