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 相关文章推荐
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
Jun 26 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
Jquery命名冲突解决的五种方案分享
Mar 16 Javascript
jqeury-easyui-layout问题解决方法
Mar 24 Javascript
jquery对table中各数据的增加、保存、删除操作示例
May 14 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
May 20 Javascript
javascript与jquery动态创建html元素示例
Jul 25 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 Javascript
BootStrap table表格插件自适应固定表头(超好用)
Aug 24 Javascript
BootStrap Table 获取同行不同列元素的方法
Dec 19 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
深入理解node.js之path模块
May 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
PHP 上传文件的方法(类)
2009/07/30 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
php简单图像创建入门实例
2015/06/10 PHP
php实现微信公众号无限群发
2015/10/11 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
百度移动版的url编码解码示例
2014/04/29 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
AngularJS监听ng-repeat渲染完成的方法
2018/03/20 Javascript
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
Python 模板引擎的注入问题分析
2017/01/01 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Django项目中model的数据处理以及页面交互方法
2018/05/30 Python
Python绘制的二项分布概率图示例
2018/08/22 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
python实现智能语音天气预报
2019/12/02 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
记帐员岗位责任制
2014/02/08 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
董事长岗位职责
2015/02/13 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
Python各协议下socket黏包问题原理
2022/04/12 Python
python数字图像处理:图像的绘制
2022/06/28 Python