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 相关文章推荐
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
Apr 01 Javascript
javascript自动改变文字大小和颜色的效果的小例子
Aug 02 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
JavaScript不使用prototype和new实现继承机制
Dec 29 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
基于jQuery实现网页打印功能
Dec 01 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
Apr 20 Javascript
AngularJS获取json数据的方法详解
May 27 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
Aug 01 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
Mar 17 Javascript
区分vue-router的hash和history模式
Oct 03 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
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
JavaScript之自定义类型
2012/05/04 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
基于jQuery制作小图标上下滑动特效
2017/01/18 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
python开发之for循环操作实例详解
2015/11/12 Python
Python运行报错UnicodeDecodeError的解决方法
2016/06/07 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
马来西亚航空官方网站:Malaysia Airlines
2017/07/28 全球购物
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
浅谈react路由传参的几种方式
2021/03/23 Javascript
销售主管岗位职责范本
2014/02/14 职场文书
数控技校生自我鉴定
2014/04/19 职场文书
护理医院见习报告
2014/11/03 职场文书
保外就医申请书范文
2015/08/06 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server