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 一个自定义长度的文本自动换行的函数
Aug 19 Javascript
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
Grunt入门教程(自动任务运行器)
Aug 06 Javascript
JavaScript事件类型中UI事件详解
Jan 14 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
Nov 01 Javascript
js中删除数组中的某一元素实例(无下标时)
Feb 28 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
Oct 16 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 Javascript
JavaScript实现单英文金山打字通
Jul 24 Javascript
详解vue中多个有顺序要求的异步操作处理
Oct 29 Javascript
vue实现整屏滚动切换
Jun 29 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
简单谈谈json跨域
2016/03/13 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
2016/06/03 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python set集合类型操作总结
2014/11/07 Python
在Mac OS上部署Nginx和FastCGI以及Flask框架的教程
2015/05/02 Python
在Linux中通过Python脚本访问mdb数据库的方法
2015/05/06 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
Python 的描述符 descriptor详解
2016/02/27 Python
使用Python对Access读写操作
2017/03/30 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
Python数据可视化之画图
2019/01/15 Python
Python Numpy库常见用法入门教程
2020/01/16 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
类如何去实现接口
2013/12/19 面试题
linux面试题参考答案(6)
2016/06/23 面试题
会计电算化个人自我评价
2013/11/17 职场文书
物业电工岗位职责
2013/11/20 职场文书
新学期开学标语
2014/06/30 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
2014年人事科工作总结
2014/11/19 职场文书
开业典礼致辞
2015/07/29 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers