最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JQueryTips(4)一些关于提高JQuery性能的Tips_jquery

来源:动视网 责编:小采 时间:2020-11-27 20:46:16
文档

JQueryTips(4)一些关于提高JQuery性能的Tips_jquery

JQueryTips(4)一些关于提高JQuery性能的Tips_jquery:在选择时,最好以ID选择符作为开头 我想这个很好理解,因为JQuery内部使用document.getElementByID方法进行ID选择,这种方法比其他所有对DOM选择的方法更快,所以以$(#)开头是最好的,比如: 代码如下: $(.b .c .d)//slo
推荐度:
导读JQueryTips(4)一些关于提高JQuery性能的Tips_jquery:在选择时,最好以ID选择符作为开头 我想这个很好理解,因为JQuery内部使用document.getElementByID方法进行ID选择,这种方法比其他所有对DOM选择的方法更快,所以以$(#)开头是最好的,比如: 代码如下: $(.b .c .d)//slo


在选择时,最好以ID选择符作为开头

我想这个很好理解,因为JQuery内部使用document.getElementByID方法进行ID选择,这种方法比其他所有对DOM选择的方法更快,所以以$("#")开头是最好的,比如:
代码如下:








$(".b .c .d")//slow one
$("#a .b .c .d")//fast one


提供$()的上下文
在使用$()选择页面元素时,提供选择的范围可以减少选择的时间,换句话说,让选择器只在页面的一小片范围内筛选而不是整个页面当然会减少筛选时间,通过在$()函数内提供第二个参数作为上下文可以实现这一点
代码如下:

hi


alert($(".inner", document.getElementById("test")).text());//increase the speed by provide context
alert($(".inner").text());//traverse all the element so that is slower than above


当然,在jquery定义(或者js函数)事件内,可以通过this来指代上下文:
代码如下:

hi


$("#test").click(function() {
var text = $(".inner", this).text(); //this means $("#test")
alert(text);//alert hi
});


当然,上面的例子也可以写成下面两种方式:
代码如下:

hi


alert($("#test .inner").text()); //method 1
alert($("#test").find(".inner").text());//method 2 and it was best one


其中利用find方法是所有方法中效率最高的

当然,如果你是通过id选择符,也就是$("#..")来选择,不需要提供上下文参数.这对速度没有影响

将经常用的JQuery包装好的元素进行保存
如题,这点比较重要,因为使用$()对页面元素进行选择是需要耗费时间的.而保存为变量进行使用时,可以避免这种浪费,比如:
代码如下:

  • one

  • two

  • three

  • four

  • five



  • for (i = 0; i < $("ul li").length; i++) {//very bad,select $("ul li") so many times,waste a lot of time
    alert($("ul li")[i].innerHTML);//same here,very bad
    }
    var $li = $("ul li");
    for (i = 0; i < $li.length; i++) {//good one,only selct $("ul li") once
    alert($li[i].innerHTML); //same here,good
    }


    从代码可以看到,避免多次重复选择可以提高性能:-)

    尽量少用选择符
    JQuery的选择器是面向数组的,所以在条件允许的情况下尽量少用选择器,比如:
    代码如下:




    $("#Div0").slideDown("slow");
    $("#Div1").slideDown("slow");
    $("#Div2").slideDown("slow");//slow

    $("Div0,Div1,Div2").slideDown("slow");//fast


    可以看出,使用选择器并用逗号将被选择的元素分开,并选择多个元素不仅让代码更加简洁,并且通过减少创建JQuery的实例所以在性能上也稍胜一筹!

    在循环次数很多时避免使用$().each,而使用for循环
    使用$().each方法让在进行循环时,会让编程更加轻松,少量的循环在使用$().each时对性能的影响可以忽略不计,但是当这个数字很大的时候,对性能的影响便开始变得可观了.

    这个数字,我查了下资料,据说是1000以下可以使用$().each方法,而这个数字如果继续增加,则应该使用for循环语句。

    尽量减少对DOM的操作
    在页面中对DOM操作是比较消耗的(比如在页面插入或删除一段文字),把这个改动降至最小是保持性能的最佳实践!比如:
    代码如下:



    var $list = $("#test");
    for (i = 1; i < 101; i++) {
    $list.append("

  • Item" + i + "
  • ");
    } //very bad,change dom 100 times

    var listItem = "";
    for (j = 1; j < 101; j++) {
    listItem += "

  • Item" + j + "
  • ";
    }
    $list.html(listItem);
    //good practice,only modify dom once



    可以看出,第一个例子对DOM修改100次,而第二个只对DOM修改1次,这上面的性能差距是显而易见的。

    可以屏蔽JQuery的动画效果
    在某些情况下,如果,可以关闭JQuery动画,能对性能进行一定提升,屏蔽的方法是:
    代码如下:

    jQuery.fx.off = true;


    如果参数可以是JS对象,尽量使用对象
    很对JQuery插件,或者JQuery的css和attr方法都接受键/值 或 js键/值对象 对作为参数,传递键值对象可以减少JQuery对象的创建,比如:
    代码如下:


    $("div").css("display", "block");
    $("div").css("background-color", "blue")
    //slow,because it create more Jquery object

    $("div").css({ "display": "block", "background-color": "blue" });
    //fast,only create one object


    当然也可以使用连缀的方式:
    代码如下:


    $("div").css("display", "block").css("background-color", "blue");



    但是这种方式的性能不如上面那种.需要使用两个方法,并且需要多生成临时对象.

    以上都是一些对JQuery性能提升的小Tips

    文档

    JQueryTips(4)一些关于提高JQuery性能的Tips_jquery

    JQueryTips(4)一些关于提高JQuery性能的Tips_jquery:在选择时,最好以ID选择符作为开头 我想这个很好理解,因为JQuery内部使用document.getElementByID方法进行ID选择,这种方法比其他所有对DOM选择的方法更快,所以以$(#)开头是最好的,比如: 代码如下: $(.b .c .d)//slo
    推荐度:
    标签: 关于 性能 tips
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top