12种jQuery代码性能优化方法.docx

上传人:b****4 文档编号:6344477 上传时间:2023-05-09 格式:DOCX 页数:12 大小:20.31KB
下载 相关 举报
12种jQuery代码性能优化方法.docx_第1页
第1页 / 共12页
12种jQuery代码性能优化方法.docx_第2页
第2页 / 共12页
12种jQuery代码性能优化方法.docx_第3页
第3页 / 共12页
12种jQuery代码性能优化方法.docx_第4页
第4页 / 共12页
12种jQuery代码性能优化方法.docx_第5页
第5页 / 共12页
12种jQuery代码性能优化方法.docx_第6页
第6页 / 共12页
12种jQuery代码性能优化方法.docx_第7页
第7页 / 共12页
12种jQuery代码性能优化方法.docx_第8页
第8页 / 共12页
12种jQuery代码性能优化方法.docx_第9页
第9页 / 共12页
12种jQuery代码性能优化方法.docx_第10页
第10页 / 共12页
12种jQuery代码性能优化方法.docx_第11页
第11页 / 共12页
12种jQuery代码性能优化方法.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

12种jQuery代码性能优化方法.docx

《12种jQuery代码性能优化方法.docx》由会员分享,可在线阅读,更多相关《12种jQuery代码性能优化方法.docx(12页珍藏版)》请在冰点文库上搜索。

12种jQuery代码性能优化方法.docx

12种jQuery代码性能优化方法

12种jQuery代码性能优化方法

代码优化分多个方面,而性能是主要的优化目标。

本文将从对象缓存、DOM操作等12个方面讲解如何优化jQuery代码的执行效率,从而总体提升代码性能。

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

在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法。

例如有一段HTML代码:

1.

2.

3.

交通信号灯

4.

5.

  • 红色
  • 6.

  • 黄色
  • 7.

  • 绿色
  • 8.

    9.

    10.

    11.

    如果采用下面的选择器,那么效率是低效的。

    1.vartraffic_button=$(“#content.button”);

    因为button已经有ID了,我们可以直接使用ID选择器。

    如下所示:

    1.vartraffic_button=$(“#traffic_button”);

    当然这只是对于单一的元素来讲。

    如果你需要选择多个元素,这必然会涉及到DOM遍历和循环,为了提高性能,建议从最近的ID开始继承。

    如下所示:

    1.vartraffic_lights=$(“#traffic_lightinput”);

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

    在jQuery中第二快的选择器是tag(标签)选择器比如:

    1.$(“head”)

    跟ID选择器累时,因为它来自原生的getElementsByTagName()方法。

    继续看刚才那段HTML代码:

    1.

    2.

    3.

    交通信号灯

    4.

    5.

  • 红色
  • 6.

  • 黄色
  • 7.

  • 绿色
  • 8.

    9.

    10.

    11.

    比如需要选择红绿单选框,那么可以使用一个tagname来限制(修饰)class,如下所示:

    1.varactive_light=$(“input.on”);

    当然也可以结合就近的ID,如下所示:

    1.varactive_light=$(“#traffic_lightinput.on”);

    在使用tag来修饰class的时候,我们需要注意以下几点:

    (1)不要使用tag来修饰ID,如下所示:

    1.varcontent=$(“div#content”);

    这样一来,选择器会先遍历所有的div元素,然后匹配#content。

    (2)不要画蛇添足的使用ID来修饰ID,如下所示:

    1.vartraffic_light=$(“#content#traffic_light”);

    3、将jQuery对象缓存起来

    把jQuery对象缓存起来就是要告诉我们要养成将jQuery对象缓存进变量的习惯。

    下面是一个jQuery新手写的一段代码:

    1.$(“#traffic_lightinput.on”).bind(“click”,function(){…});

    2.$(“#traffic_lightinput.on”).css(“border”,“1pxdashedyellow”);

    3.$(“#traffic_lightinput.on”).css(“background-color”,“orange”);

    4.$(“#traffic_lightinput.on”).fadeIn(“slow”);

    但切记不要这么做。

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

    1.var$active_light=$(“#traffic_lightinput.on”);

    2.$active_light.bind(“click”,function(){…});

    3.$active_light.css(“border”,“1pxdashedyellow”);

    4.$active_light.css(“background-color”,“orange”);

    5.$active_light.fadeIn(“slow”);

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

    注:

    (1)为了区分普通的JavaScript对象和jQuery对象,可以在变量首字母前加上$符号。

    (2)上面代码可以使用jQuery的链式操作加以改善,如下所示:

    1.var$active_light=$(“#traffic_lightinput.on”);

    2.$active_light.bind(“click”,function(){…})

    3..css(“border”,“1pxdashedyellow”)

    4..css(“background-color”,“orange”)

    5..fadeIn(“slow”);

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

    如下代码所示:

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

    window对象)

    2.window.$my={

    3.head:

    $(“head”),

    4.traffic_light:

    $(“#traffic_light”),

    5.traffic_button:

    $(“#traffic_button”)

    6.};

    7.functiondo_something(){//现在你可以引用存储的结果并操作它们

    8.varscript=document.createElement(“script”);

    9.$my.head.append(script);

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

    11.$my.cool_results=$(“#some_ulli”);

    12.$my.other_results=$(“#some_tabletd”);

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

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

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

    16.}

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

    4、限制直接对DOM进行操作

    这里的基本思想是在内存中建立你确实想要的东西,然后更新DOM,这并不是一个jQuery最佳实践,但必须进行有效的JavaScript操作,直接的DOM操作速度很慢。

    例如,你想动态的创建一组列表元素,千万不要这样做,如下所示:

    1.vartop_100_list=[...],//假设这里是100个独一无二的字符串

    2.$mylist=$(“#mylist”);//jQuery选择到