一、使用合适的选择器

  1. $("#id");

1.使用id来定位DOM元素无疑是最佳提高性能的方式,因为jQuery底层将直接调用本地方法document.getElementById();如果这个 方式不能直接找到你需要的元素,那么你可以考虑调用find()方法,代码如下:

  1. $("#domo").find("div");

使用以上代码可以有效的缩小你定位的DOM元素。

2.标签选择器的性能也是不错的,它是性能优化的第二选择。

二、缓存对象

在写代码时,我们一般喜欢这样写:

  1. $("#domo p").bind("click",function(){.....});
  2. $("#domo p").css("color","green");
  3. $("#domo p").fadeIn(1000);

但是这样写的后果是:jQuery会在创建每一个选择器的过程中,查找DOM,创建多个jQuery对象。

比较好的书写方式如下:

  1. var $yuki=$("#domo p");//缓存变量
  2. $yuki.bind("click",function(){......});
  3. $yuki.css("color","green");
  4. $yuki.fadeIn(1000);
  5.  
  6. //上面的代码还可以改善一下,如下
  7.  
  8. var $yuki=$("#domo p");
  9. $yuki.bind("click",function(){
  10. //...
  11. }).css("color","green").fadeIn(1000);

三、循环时的DOM操作

我们来看一段代码:

  1. var yuki=[...];//假设这里是100个独一无二的字符串
  2. var $mylist=$("#mylist");//jQuery选择到<ul>元素
  3. for(var i=0;i<$mylist.length;i++){
  4. $mylist.append("<li>"+yuki[i]+"</li>");
  5. }

以上代码,我们将每一个新添加的标签元素作为一个节点添加到容器ID中,每一次循环,都会调用到$mylist

所以更好的方式是尽可能的减少DOM操作,代码如下:

  1. var yuki=[...];
  2. var $mylist=$("#mylist");
  3. var result="";
  4. for(var i=0;i<$mylist.length;i++){
  5. result+="<li>"+yuki[i]+"</li>";
  6. }
  7. //我们将整个元素字符串在插入DOM元素(ul)之前全部创建好,这样大大的减少了DOM操作
  8. $mylist.html(result);

四、事件代理

每一个JavaScript事件都会冒泡到父级节点。当我们需要给多个元素调用同一个函数时这点会很有用。比如,我们要为一个表格绑定这样的行为:点击td后,把背景色设置为红色,代码如下:

  1. $("#myTable td").click(function(){
  2. $(this).css("background","red");
  3. })

假设有100个td元素,在使用以上方式的时候,你绑定了100个事件,这将带来很负面的性能影响,有没有什么更好的方式呢?

代替这种效率很差的元素事件监听的方法就是:你只需向它们的父节点绑定一次事件,然后通过event.target获取到点击的当前元素。

代码如下:

  1. $("#myTable").click(function(e){
  2. var $clicked=$(e.target);//e.target捕捉到触发的目标元素
  3. $clicked.css("background","red");
  4. })

还有一种方式是使用on() ,代码如下:

  1. $("#myTable").on("click","td",function(){
  2. $(this).css("background","red");
  3. })

前端性能优化jQuery性能优化的更多相关文章

  1. jQuery性能优化

    1. 优化选择器执行的速度 优先使用ID与标记选择器 在jQuery中,访问DOM元素的最快方式是通过元素ID号,其次是通过元素的标记.因为前者源于JavaScript中的document.getEl ...

  2. jQuery性能优化篇

    jQuery高级技巧——性能优化篇 阅读目录 通过CDN(Content Delivery Network)引入jQuery库 减少DOM操作 适当使用原生JS 选择器优化 缓存jQuery对象 定义 ...

  3. Web前端性能优化之图片优化

    我自己的Blog:http://blog.cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到了互联网内容总量的62%,也就是说超过 ...

  4. jQuery性能优化指南(转载)

    现在jquery应用的越来越多, 有些同学在享受爽快淋漓coding时就将性能问题忽略了, 比如我. jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, ...

  5. jQuery性能优化的28个建议

    我一直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将最好最常用的一些优化性能的建议列出来.我也做了一个jQuery性能优化的简明样式表,你可 ...

  6. web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识

    web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识 ——不会WPO.SEO的前端工程师不是好码农 作为一名web前端工程师,除了要实现上级的要求,满足其所需要的功能,还要在平时 ...

  7. jQuery:jQuery性能优化28条建议

    http://www.xue5.com/WebDev/jQuery/671700.html 直在寻找有关jQuery性能优化方面的小窍门,能让我那臃肿的动态网页应用变得轻便些.找了很多文章后,我决定将 ...

  8. jquery性能优化的十种方法

    jquery性能优化的十种方法 有时候我们在书写jquery的时候,为了书写代码方便,往往忽略了程序执行过程中,给客户端带来的压力.随之而来的就是在某些低端浏览器或者低端电脑上运行速度缓慢,甚至无法运 ...

  9. jQuery 性能优化技巧

    原文地址:jQuery 性能优化技巧 博客地址:http://www.extlight.com 一.使用最新版本 jQuery 类库 二.合理使用选择器 # 推荐使用 $("#id" ...

随机推荐

  1. 快速搞定用Vue+Webpack搭建前端项目(学习好久了,该写点东西了......)

    现在开始安装环境 一.安装node.js 首先要安装node.js,去nodejs官网下载即可,地址:http://nodejs.cn/中文网. 安装完成后,打开终端(windows键+R)搜索cmd ...

  2. Maven搭建SpringMVC+MyBatis+Json项目(多模块项目)

    一.开发环境 Eclipse:eclipse-jee-luna-SR1a-win32; JDK:jdk-8u121-windows-i586.exe; MySql:MySQL Server 5.5; ...

  3. Azure ARM (17) 基于角色的访问控制 (Role Based Access Control, RBAC) - 自定义Role

    <Windows Azure Platform 系列文章目录> 在上面一篇博客中,笔者介绍了如何在RBAC里面,设置默认的Role. 这里笔者将介绍如何使用自定的Role. 主要内容有: ...

  4. 0 can't find referenced pointcut declarePointExpress

    今天在用SpringAOP 的 @pointCut 的时候报错 Exception in thread "main" org.springframework.beans.facto ...

  5. Html语言,使用<a>标签发送电子邮件

    <a>标签有一个功能是可以链接Email地址,使用mailto能让访问者便捷向网站管理者发送电子邮件. 使用mailto 属性时请参考下表: 如果mailto里同时有多个参数,第一个参数必 ...

  6. Delphi系列书籍pdf 118本 网友吐血整理

    第一步:进入官网首页http://bulo.hujiang.com/home/ 第二部:home/替换u/779988/diary/627936/ 来自沪江部落

  7. axis和cxf集成Springmvc的使用

    一.使用axis用wsdl生成Webservice: 工具:有axis插件的eclipse,wsdl文件: 操作步骤: 新建工程-->选择wsdl文件-->右键选择Webservice-- ...

  8. C++ sizeof 误区 大公司面试题

    1.C++ 无成员变量和函数的类型的实例,求该实例的sizeof? 答:是1.(不是0) 2.如果在题1的基础上有1个成员变量,sizeof是(1+成员变量的大小)吗? 答:不是,是成员变量的大小. ...

  9. "HK"日常之用C# Process写一只小病毒

    众所周知,Process可以启动和关闭电脑上的进程,命名空间位于 System.Diagnostics,本次的教程就是利用其中的GetProcesses和Kill方法来实现的. 一.编码工作 首先我们 ...

  10. Racing Car Computer dp

    Racing Car Computer Input: Standard Input Output: Standard Output   The racing cars of today are equ ...