> 웹 프론트엔드 > JS 튜토리얼 > jQuery 성능 최적화 가이드(3)_jquery

jQuery 성능 최적화 가이드(3)_jquery

WBOY
풀어 주다: 2016-05-16 18:52:40
원래의
1124명이 탐색했습니다.
8,尽量使用ID代替Class。
 

前面性能优化已经说过,ID选择器的速度是最快的。所以在HTML代码中,能使用ID的尽量使用ID来代替class。
看下面的一个例子:

// 创建一个list
var $myList = $('#myList');
var myListItems = '
    ';
for (i = 0; i < 1000; i++) {
myListItems += '
  • This is a list item
  • '; //这里使用的是class
     }
    myListItems += '';
    $myList.html(myListItems);
    // 选择每一个 li
     for (i = 0; i < 1000; i++) {
        var selectedItem = $('.listItem' + i);
    }

    在代码最后,选择每个li的过程中,总共用了5066毫秒,超过5秒了。

    接着我们做一个对比,用ID代替class:

     

    // 创建一个list
    var $myList = $('#myList');
    var myListItems = '
      ';
    for (i = 0; i < 1000; i++) {
    myListItems += '
  • This is a list item
  • '; //这里使用的是id
    }
    myListItems += '';
    $myList.html(myListItems);
     // 选择每一个 li
    for (i = 0; i < 1000; i++) {
    var selectedItem = $('#listItem' + i);
    }

    在上段代码中,选择每个li总共只用了61毫秒,相比class的方式,将近快了100倍。

    9,给选择器一个上下文

    jQuery选择器中有一个这样的选择器,它能指定上下文。
    jQuery( expression, context );

    通过它,能缩小选择器在DOM中搜索的范围,达到节省时间,提高效率。
    普通方式:
    $('.myDiv')
    改进方式:
    $('.myDiv' , $("#listItem") )

    10,慎用 .live()方法(应该说尽量不要使用)

    这是jQuery1.3.1版本之后增加的方法,这个方法的功能就是为 新增的DOM元素 动态绑定事件。
    但对于效率来说,这个方法比较占用资源。所以请尽量不要使用它。
    例如有这么一段代码:

    this is first p

    运行后,你会发现 新增 的 p元素,并没用被绑定click事件。

    你可以改成.live("click")方式解决此问题,代码如下:

    $(function(){
    $("p").live("click",function(){ //改成live方式
         alert( $(this).text() );
     });
    $("button").click(function(){ $("

    this is second p

    ").appendTo("body"); });})

    但我并不建议大家这么做,我想用另一种方式去解决这个问题,代码如下:

    $(function(){
    $("p").click(function(){
        alert( $(this).text() );
    });
    $("button").click(function(){
        $("

    this is second p

    ").click(function(){  //为新增的元素重新绑定一次
                alert( $(this).text() );
        }).appendTo("body");
    });
    })

    바인딩 이벤트를 다시 작성하고 코드가 조금 더 많아졌지만 live() 메서드보다 효율성이 훨씬 높습니다.
    이는 특히 빈번한 DOM 작업에서 매우 분명합니다.


    11, 하위 선택자 및 하위 선택자

    다음과 같이 하위 항목 선택기가 자주 사용됩니다. $("#list p");
    하위 항목 선택자는 요소 내부의 모든 요소를 ​​가져옵니다.

    하위 요소만 가져와야 하는 경우도 있으므로 하위 항목 선택기를 사용하면 안 됩니다.
    하위 선택기를 사용해야 합니다. 코드는 다음과 같습니다.
    $("#list > p");

    12, data() 메소드를 사용하여 임시 변수를 저장합니다

    다음은 매우 간단한 코드입니다.

    $(함수(){

    var 플래그 = false;

    $("버튼").click(function(){

    if(플래그){

    $("p").text("true");

    플래그=false;

    }그밖에{

    $("p").text("false");

    플래그=true;

           }

    });

    })

    data() 메소드로 전환한 후의 코드는 다음과 같습니다.

    $(함수(){

    $("버튼").click(function(){

    If( $("p").data("플래그") ){

    $("p").text("참")

    $("p").data("flag",false)

    }그밖에{

    $("p").text("false");

    $("p").data("flag",true)

           }

    })

    })


    이것으로 jQuery 성능 최적화 가이드(3)를 마칩니다.
    여러분도 자신만의 아이디어가 있다고 생각합니다. 공유해 주세요. 이메일: cssrain@gmail.com
    관련 라벨:
    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 이슈
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿