位置: 编程技术 - 正文

jQuery代码性能优化的10种方法(jquery代码实例)

编辑:rootadmin

推荐整理分享jQuery代码性能优化的10种方法(jquery代码实例),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:jquery常用代码,jquery有用吗,jquery性能优化,jquery代码在哪里运行,jquery技术,jquery性能优化,jquery优点,jquery性能优化,内容如对您有帮助,希望把文章链接给更多的朋友!

1、总是使用#id去寻找element.

在jQuery中最快的选择器是ID选择器 ($('#someid')). 这是因为它直接映射为JavaScript的getElementById()方法。选择单个元素

选择button的性能不好的一种方式:

取而代之的是直接选择button:

选择多个元素

在我们讨论选择多个元素的时候,我们真正需要知道的是DOM的遍历和循环才是性能低下的原因。为了尽量减少性能损失, 总是使用最近的父ID去寻找。

2、在Classes前面使用Tags

在jQuery中第二快的选择器就是Tag选择器 ($('head')). 而这是因为它直接映射到JavaScript的getElementsByTagName()方法。

总是在一个Class前面加上一个tag名字(记得从一个ID传下来)

注意:在jQuery里Class选择器是最慢的一个选择器;在IE中它循环整个DOM。可能的话尽量避免使用它。不要在ID前面 加Tags。例如,它会因为去循环所有的<div>元素去寻找ID为content的<div>,而导致很慢。

按照同样的思路,从多个ID传下来是冗余的。

3、缓存jQuery对象

养成保存jQuery对象到一个变量上(就像上面的例子)的习惯。例如,不要这样做:

取而代之,首现保存jQuery变量到一个本地变量后,再继续你的操作。

提示:使用$前辍表示我们的本地变量是一个jQuery包集。记住,不要在你的应该程序里出现一次以上的jQuery重复的选择操作。 额外提示:延迟存储jQuery对象结果。

如果你想在你的程序的其它地方使用jQuery结果对象(result object(s)),或者你的函数要执行多次,要把它缓存在一个全局范围的对象里。通过定义一个全局容器保存jQuery结果对象,就可以在其它的函数里引用它。

4、更好的利用链

前面的例子也可以这样写:

这样可以让我们写更少的代码,使JavaScript更轻量。

5、使用子查询

jQuery代码性能优化的10种方法(jquery代码实例)

jQuery允许我们在一个包集上附加其它的选择器。因为我们已经在本地变量里保存了父对象这样会减少以后在选择器上的性能开销。

例如,我们可以利用子查询缓存active和inactive lights以便后面的操作。

提示:可以用逗号隔开一次定义多个本地变量,这样可以节省一些字节。

6、限制直接对DOM操作

DOM操作的基本做法是在内存中创建DOM结构,然后再更新DOM结构。这不是jQuery最好的做法,但对JavaScript来讲是高效的。直接操作DOM结构性能是低下的。 例如,如果你需要动态创建一列元素,不要这样做:

取而代之,我们希望在插入DOM结构之前先在一个字符串里创建一套元素。代码

更快的做法,在插入DOM结构之前我们应该总是在一个父节点里包含许多元素

如是你照着上面的做了还是对性能有些迷惑的话,可以参考以下内容:

* 试一下jQuery提供的Clone()方法。Clone()方法创建节点数的拷贝,随后你可以在这个副本中进行操作。

* 使用DOM DocumentFragments. As the creator of jQuery points out, 比直接操作DOM性能上更好. 先创建你需要的结构(就像我们上面用一个字符串做的一样), 然后使用jQuery的 insert or replace methods.

7、事件委托(又名:冒泡事件)

除非特别说明,每一个JavaScript事件(如click, mouseover 等)在DOM结构树上都会冒泡到它的父元素上。如果我们想让很多elements(nodes)调用同一个function这是非常有用的。取而代之的是 你可以只对它们的父级绑定一次,而且可以计算出是哪一个节点触发了事件,而不是绑定一个事件监听器到很多节点上这种效率低下的方式。例如,假如我们要开发 一个包含很多input的大型form,当input被选择的时候我们想绑定一个class name。像这样的帮定是效率低下的:

反而,我们应该在父级侦听click事件。

父节点担当着发报机的工作,可以在触发了事件的目标element上做一些工作。如果你发现自己把一个event listener帮定到很多个element上,那么你这种做法是不正确的。

8、消除查询浪费

虽然jQuery对没有找到任何匹配的elements处理的很好,但是它还是需要花费时间去查找的。如果你的站点有一个全局的JavaScript,你可能会把每个jQuery function都放在 $(document).ready(function(){ // all my glorious code })里。 不要这样做。只去放一些页面上适合用到的function。这样做最有效的方式是你的模板可以完全控制任何时候或者地方执行JavaScript以内联脚 本的方式初始化function。例如,在你的“article”页面模板里,你可能在body标签关闭之前包含以下代码

<script type="text/javascript>mylib.article.init();</script></body& gt;如果你的页面模板包含多种有可能在页面或者不在页面上的模块,或者为了可视化效果你需要它们稍后再初如化,你应该在这些模块之后立即放置初如化函数。

你的全局JavaScript库看起来应该是这样的:

9、遵从$(windows).load

有 一种诱惑会使jQuery开发者hook所有事情到 $(document).ready 这个虚伪的事件里。毕竟在大多数例子里都可以看到这样使用。虽然$(document).ready 非常有用,它在页面呈现时发生,虽然其它对象还在下载中。如果你发现你的页面在下载中停顿,就有可能是$(document).ready 引起的。你可以通过把jQuery functions帮定到$(window).load事件来减少下面下载时的CPU使用率,它是在所有HTML(包括iframe内容)都下载完以后才 去调用所有对象的。

多余的功能,如拖拽、帮定可视化效果和动画、预读取图片等,使用这种方法比较好。

、压缩JS

虽然和jQuery无关,但在这里也要提一下。使JavaScript函数和变量变得可读是一个趋势,这对开发者来讲是必不可少的,但对普通用户来 讲没有任何关系。不用什么借口,是时候把JS压缩纳入我们的工作流程中来了。注释你的代码,在投放到生产环境之前找一个压缩工具进行压缩。使用 YUICompressor 压缩你代码中多余的浪费的字节。根据我们的经验,它可以安全的把JavaScript压缩的尽可能小,而不会多占用CPU。小提示:为了在 YUICompressor里最大化压缩,应该这样这样定义变量(例如:var my_long_variable_name;)

学习和最有效的使用jQuery,最好的方法就是去查jQuery的文档和手册了。

标签: jquery代码实例

本文链接地址:https://www.jiuchutong.com/biancheng/385870.html 转载请保留说明!

上一篇:jQuery实现的网格线绘制方法(jquery网页)

下一篇:jQuery AJAX timeout 超时问题详解

  • 应付账款转资本公积
  • 金蝶专业版仓库反审核怎么做
  • 个税年度汇算清缴截止时间
  • 收到0税率发票是否可以给对方开6税率发票
  • 归属于母公司的净资产
  • 横向转拨财政款应通过什么科目
  • 企业所得税财务费用借款利息扣除标准
  • 常见的会计凭证有哪些
  • 劳动保护费通过什么确认
  • 当年实现的利润属于资产吗
  • 置换新房产支付资金怎么纳税?
  • 一台设备分期开票数量
  • 厂家给经销商的搭赠政策
  • 库存现金盘点表是不是原始凭证
  • 财务费用手续费有哪些
  • 买空调交税是谁交税
  • 由母公司承担子公司债务的财务处理怎么做?
  • 税后工资反推税前工资计算方法
  • 关于商业健康保险产品的规范和条件
  • 分拆业务所涉及客户
  • 资本收益率的计算公式净资产收益率
  • 建筑劳务公司开发票
  • 金融衍生工具的特点不包括
  • 有限责任公司向合伙企业投资
  • 年度报告包括哪些内容
  • 管理费用的结转需要在明细账中体现吗
  • 汽车租赁公司产品服务
  • 所有者权是否益包括未交出资吗?
  • 工程分配协议书范本
  • 电脑开机弹出documents文件夹
  • 去年的成本如何调整
  • php parse_url
  • 入库前的准备
  • 政府补助退回的账务处理
  • 公司员工个税怎么交
  • 进程中svchost
  • 预收账款为什么不属于金融负债
  • php的递归
  • php的教程
  • 固定资产盘盈会影响所有者权益吗
  • 总分机构分摊比例如何确定
  • 【强化学习】Q-Learning算法详解
  • 用谷歌浏览
  • 直接进入税金及附加的科目
  • 收到借款时 会计科目怎么做
  • 开发票纸巾属于什么编码
  • 分公司开票总公司收款怎么做账
  • 销售鸡蛋免增值税吗
  • 印花税是根据什么申报的
  • vue使用百度地图md5报错
  • 长期借款期末余额表示什么
  • 三证合一后个体交税吗
  • 电子发票应如何打印出来
  • 小规模纳税人适用5%的税率是什么
  • 定期定额怎么申报个人所得税
  • 纳税人防伪税控设备未抄报怎么办
  • 逃税是什么意思?
  • 利息为什么存在
  • 企业领用产品的会计分录
  • 支付宝收入什么意思
  • 预付账款的账务处理过程
  • 银行本票的使用仅限于
  • sqlserver高可用集群搭建
  • sql高级语句实例
  • win7系统打开软件就停止工作
  • 搜狗网络
  • win10如何添加输入法
  • Vista 目前的窘境5大原因分析
  • centos关闭gui
  • win7旗舰版怎么改成专业版
  • 微软输入法拼音
  • 慎用小儿百部止咳糖浆
  • Node.js中的包管理工具是什么
  • angular.min.js
  • typeto
  • WINDOWS中使用磁盘清理的主要作用是为了什么
  • 银行端查询缴税凭证怎么打印
  • 百望电子发票查询下载
  • 个人所得税申请专项扣除有什么用
  • 美国对中国商品征收关税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设