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 Tab 导航插件 (23个)
Jun 11 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
Apr 28 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
js类式继承的具体实现方法
Dec 31 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
JS的事件绑定深入认识
Jun 26 Javascript
详解Document.Cookie
Dec 25 Javascript
一个仿微博登陆邮箱提示框js开发案例
Jul 28 Javascript
JavaScript字符串对象(string)基本用法示例
Jan 18 Javascript
利用Vue.js实现checkbox的全选反选效果
Jan 18 Javascript
微信、QQ、微博、Safari中使用js唤起App
Jan 24 Javascript
小程序使用watch监听数据变化的方法详解
Sep 20 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
在JavaScript中调用php程序
2009/03/09 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
2014/01/15 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
jQuery中hasClass()方法用法实例
2015/01/06 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
纯javascript制作日历控件
2015/07/17 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
基于jquery实现三级下拉菜单
2016/05/10 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
基于js原生和ajax的get和post方法以及jsonp的原生写法实例
2017/10/16 Javascript
ExtJs整合Echarts的示例代码
2018/02/27 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
Python常见数据结构详解
2014/07/24 Python
python自然语言编码转换模块codecs介绍
2015/04/08 Python
Python读取Excel的方法实例分析
2015/07/11 Python
详解Python中的文件操作
2016/08/28 Python
python实现梯度下降算法
2020/03/24 Python
浅谈PYTHON 关于文件的操作
2019/03/19 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
医学生求职自荐信
2013/10/25 职场文书
房地产销售大学生自我评价分享
2013/11/11 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
工程索赔意向书
2014/08/30 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
先进工作者事迹材料
2014/12/23 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书