`
echorenyuan
  • 浏览: 20494 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jQuery性能优化指南(1)

阅读更多

1,总是从ID选择器开始继承

在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法
例如有一段HTML代码:

    <div id=”content”>
    <form method=”post” action=”#”>
    <h2>交通信号灯</h2>
    <ul id=”traffic_light”>
    <li><input type=”radio” class=”on” name=”light” value=”red” /> 红色</li>
    <li><input type=”radio” class=”off” name=”light” value=”yellow” /> 黄色</li>
    <li><input type=”radio” class=”off” name=”light” value=”green” /> 绿色</li>
    </ul>
    <input class=”button” id=”traffic_button” type=”submit” value=”Go” />
    </form>
    </div>
 

如果采用下面的选择器,那么效率是低效的。
var traffic_button = $(”#content .button”);

因为button已经有ID了,我们可以直接使用ID选择器。如下所示:
var traffic_button = $(”#traffic_button”);

当然 这只是对于单一的元素来讲。如果你需要选择多个元素,这必然会涉及到 DOM遍历和循环,
为了提高性能,建议从最近的ID开始继承。
如下所示:
var traffic_lights = $(”#traffic_light input”);

2,在class前使用tag(标签名)

在jQuery中第二快的选择器是tag(标签)选择器( 比如:$(”head”) )。
跟ID选择器累时,因为它来自原生的getElementsByTagName() 方法。

继续看刚才那段HTML代码:

    <div id=”content”>

    <form method=”post” action=”#”>

    <h2>交通信号灯</h2>

    <ul id=”traffic_light”>

    <li><input type=”radio” class=”on” name=”light” value=”red” /> 红色</li>

    <li><input type=”radio” class=”off” name=”light” value=”yellow” /> 黄色</li>

    <li><input type=”radio” class=”off” name=”light” value=”green” /> 绿色</li>

    </ul>

    <input class=”button” id=”traffic_button” type=”submit” value=”Go” />

    </form>

    </div>

 

比如需要选择 红绿 单选框,
那么可以使用一个tag name来限制(修饰)class ,如下所示:
var active_light = $(”input.on”);
当然也可以结合 就近的ID,如下所示:
var active_light = $(”#traffic_light input.on”);
在使用tag来修饰class的时候,我们需要注意以下几点:
(1) 不要使用tag来修饰ID,如下所示:
var content = $(”div#content”);
这样一来,选择器会先遍历所有的div元素,然后匹配#content。
(好像jQuery从1.3.1开始改变了选择器核心后,不存在这个问题了。暂时无法考证。)

(2)不要画蛇添足的使用ID来修饰ID,如下所示:
var traffic_light = $(”#content #traffic_light”);

注:如果使用属性选择器,也请尽量使用tag来修饰,如下所示:
$(’p[row="c3221"]‘).html();而不是这样:$(’[row="c3221"]‘).html();
3,将jQuery对象缓存起来

把jQuery对象缓存起来 就是要告诉我们 要养成将jQuery对象缓存进变量的习惯。
下面是一个jQuery新手写的一段代码:

    $(”#traffic_light input.on”).bind(”click”, function(){ … });
    $(”#traffic_light input.on”).css(”border”, “1px dashed yellow”);
    $(”#traffic_light input.on”).css(”background-color”, “orange”);
    $(”#traffic_light input.on”).fadeIn(”slow”);
 

但切记不要这么做。

我们应该先将对象缓存进一个变量然后再操作,如下所示:

    var $active_light = $(”#traffic_light input.on”);
    $active_light.bind(”click”, function(){ … });
    $active_light.css(”border”, “1px dashed yellow”);
    $active_light.css(”background-color”, “orange”);
    $active_light.fadeIn(”slow”);
 

记住,永远不要让相同的选择器在你的代码里出现多次.

注:(1)为了区分普通的JavaScript对象和jQuery对象,可以在变量首字母前加上 $ 符号。
(2)上面代码可以使用jQuery的链式操作加以改善。如下所示:

    var $active_light = $(”#traffic_light input.on”);
    $active_light.bind(”click”, function(){ … })
    .css(”border”, “1px dashed yellow”)
    .css(”background-color”, “orange”)
    .fadeIn(”slow”);

 如果你打算在其他函数中使用jQuery对象,那么你必须把它们缓存到全局环境中。
如下代码所示:

    // 在全局范围定义一个对象 (例如: window对象)

    window.$my = {

    head : $(”head”),

    traffic_light : $(”#traffic_light”),

    traffic_button : $(”#traffic_button”)

    };

    function do_something(){

    // 现在你可以引用存储的结果并操作它们

    var script = document.createElement(”script”);

    $my.head.append(script);

    // 当你在函数内部操作是, 可以继续将查询存入全局对象中去.

    $my.cool_results = $(”#some_ul li”);

    $my.other_results = $(”#some_table td”);

    // 将全局函数作为一个普通的jquery对象去使用.

    $my.other_results.css(”border-color”, “red”);

    $my.traffic_light.css(”border-color”, “green”);

    }

    //你也可以在其他函数中 使用它

 
分享到:
评论
2 楼 feilongyizu 2010-10-26  
我随不是web前端工程师,但是因为公司人手不够也在兼做前端开发工作。
看了您的文章真得是受益匪浅!

谢谢你共享自己的经验。
1 楼 echorenyuan 2009-06-22  
如果有人留言我就发布后面的几个优化指南

相关推荐

    jQuery性能优化指南

    以下是一些关于jQuery性能优化的关键知识点,这些内容可能在"jQuery性能优化指南1.htm、jQuery性能优化指南2.htm、jQuery性能优化指南3.htm"中有所涉及。 1. **选择器优化**:jQuery的选择器是强大的,但过度使用...

    JQuery性能优化指南

    在JavaScript的世界里,jQuery是一个广泛使用的库,它简化了DOM...通过阅读《jQuery性能优化指南(1).htm》和《jQuery性能优化指南(2).htm》,可以深入了解每个技巧的详细实践方法,进一步提升您的jQuery项目性能。

    jQuery性能优化指南.pdf

    ### jQuery性能优化指南 在网页开发中,使用jQuery可以极大地简化HTML文档遍历、事件处理、动画等操作,但随着项目复杂度的增加,如何优化jQuery的使用,以提升页面性能变得至关重要。以下是对给定文件《jQuery性能...

    Jquery性能优化指南

    在进行jQuery性能优化时,有几个关键点可以帮助提升代码运行效率,从而提高网页的加载速度和用户体验。以下是对这些优化策略的详细解释: 1. **总是从 ID 选择器开始继承**: ID选择器是最高效的,因为它直接对应...

    jQuery性能优化指南97-2003doc

    ### jQuery性能优化指南 #### 一、从ID选择器开始 **重要性**: 在使用jQuery进行DOM操作时,选择器的性能对整个应用的响应速度至关重要。选择器的速度直接影响到页面加载时间以及用户交互体验。 **ID选择器**: 最...

    jQuery 性能优化指南 (1)

    总之,jQuery性能优化的关键在于明智地选择选择器和有效利用对象缓存。通过优先使用ID选择器、标签名选择器,并避免不必要的DOM遍历,以及存储和重用jQuery对象,我们可以显著提升页面的性能和响应速度。在编写...

    jQuery(权威指南)

    对于初学者,这本书会涵盖jQuery的基本用法,包括选择器、DOM操作、事件处理、动画和Ajax的使用,同时也会讲解如何编写插件和优化性能。书中还会包含大量的实例代码,帮助读者将理论知识转化为实际技能。 此外,这...

    jQuery 性能优化指南(3)

    在本篇“jQuery性能优化指南(3)”文章中,作者深入探讨了在使用jQuery进行DOM操作时如何提升代码的执行效率。文章集中讨论了几种提升性能的关键方法,强调了在编写jQuery代码时,对选择器的使用应当格外关注,因为...

    jQuery 性能优化指南(2)

    《jQuery 性能优化指南(2)》 在前端开发中,jQuery库因其简洁的语法和强大的功能而广受欢迎。然而,随着网页复杂性的增加,性能优化变得至关重要。本篇文章将探讨如何对直接的DOM操作进行限制以及如何利用事件...

    jQuery 1.4 参考指南的实例源代码

    这个版本的更新包括性能优化、API调整以及对新浏览器特性的支持,使得开发者可以更高效地编写跨浏览器的JavaScript代码。 首先,jQuery的核心功能之一是DOM操作。例如,通过`$()`选择器可以方便地选取HTML元素,而`...

    前端性能优化指南

    ### 前端性能优化指南 #### 概述 前端性能优化是指通过对网站或Web应用的前端部分进行改进,以提升用户体验的过程。优秀的前端性能优化能够显著提高网页加载速度、减少资源消耗、增强用户交互体验,进而提升整体的...

    jQuery权威指南(第2版)1

    jQuery 1.8的新特性可能包括性能优化、API改进以及对新浏览器特性的支持。在搭建jQuery开发环境时,读者将学习如何下载jQuery库,以及通过URL方式动态加载库文件,为快速开发jQuery应用打下基础。 书中详细讲解了...

    JQuery权威指南源代码

    4. jQuery性能优化 - 使用ID选择器:ID选择器是最高效的,应优先考虑。 - 避免使用CSS后代选择器:后代选择器性能较差,尽量使用类选择器或属性选择器。 - 减少DOM操作:一次性操作多个元素比逐个操作更高效。 -...

    jQuery权威指南-源代码

    第10章 jQuery性能优化与最佳实践/312 10.1 优化选择器执行的速度/313 10.1.1 优先使用ID与标记选择器/313 10.1.2 使用jQuery对象缓存/314 10.1.3 给选择器一个上下文/315 10.2 处理选择器中的不规范元素标志/...

Global site tag (gtag.js) - Google Analytics