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英文日期(有时间)选择器
May 02 Javascript
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
Aug 28 Javascript
javascript关于继承的用法汇总
Dec 20 Javascript
Bootstrap实现下拉菜单效果
Apr 29 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
JS取模、取商及取整运算方法示例
Oct 13 Javascript
js date 格式化
Feb 15 Javascript
详解vue + vuex + directives实现权限按钮的思路
Oct 24 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
Sep 20 Javascript
vue-cli 关闭热更新操作
Sep 18 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
Feb 20 Vue.js
鼠标左键单击冲突的问题解决方法(防止冒泡)
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动态生成VRML网页
2006/10/09 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
Bootstrap Table快速完美搭建后台管理系统
2017/09/20 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
js实现上下左右键盘控制div移动
2020/01/16 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
Python实现高效求解素数代码实例
2015/06/30 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
利用Python实现网络测试的脚本分享
2017/05/26 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python删除文本中行数标签的方法
2018/05/31 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Python中安装easy_install的方法
2018/11/18 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
好的自荐信的要求
2013/10/30 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
2014年建筑工作总结
2014/11/26 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python