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温习篇 强大的JQuery选择器
Apr 24 Javascript
通过js获取div的background-image属性
Oct 15 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
Dec 08 Javascript
Javascript将JSON日期格式化
Aug 23 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
Aug 24 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
Sep 01 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
Sep 30 Javascript
详解Ant Design of React的安装和使用方法
Dec 27 Javascript
推荐一个基于Node.js的表单验证库
Feb 15 Javascript
vue实现分页栏效果
Jun 28 Javascript
JS图片预加载三种实现方法解析
May 08 Javascript
JavaScript缺少insertAfter解决方案
Jul 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类
2008/04/09 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
实例讲解PHP表单处理
2019/02/15 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
jQuery 计算iframe 窗口大小的方法
2014/05/13 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
微信小程序开发背景图显示功能
2018/08/08 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
2020/09/04 Javascript
[02:58]魔廷新尊——痛苦女王至宝语音台词节选
2020/06/14 DOTA
python读取Android permission文件
2013/11/01 Python
使用PDB简单调试Python程序简明指南
2015/04/25 Python
python实现SMTP邮件发送功能
2020/06/16 Python
Python基于回溯法子集树模板解决选排问题示例
2017/09/07 Python
python3使用requests模块爬取页面内容的实战演练
2017/09/25 Python
python3读取csv和xlsx文件的实例
2018/06/22 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python3获取当前目录的实现方法
2019/07/29 Python
Python实现封装打包自己写的代码,被python import
2020/07/12 Python
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
书法比赛获奖感言
2014/02/10 职场文书
矿泉水广告词
2014/03/20 职场文书
森林病虫害防治方案
2014/06/02 职场文书
个人融资协议书
2014/10/02 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书