• JQuery性能优化


    1,总是从ID选择器开始继承
    这条原则就是有id尽量选id。
    2,在class前使用tag(标签名)

    var active_light = $(”#traffic_light input.on”);
    3,将jQuery对象缓存起来
    var $active_light = $(”#traffic_light input.on”);
    $active_light.bind(”click”, function(){ … });
    4,对直接的DOM操作进行限制
    for (var i=0, l=top_100_list.length; i<l; i++){
       top_100_li += “<li>” + top_100_list[i] + “</li>”;
    }
    $mylist.html(top_100_li);
    原则就是先拼出所有的HTML,再插入DOM。
    5,冒泡
    除非在特殊情况下, 否则每一个js事件(例如:click, mouseover等.)都会冒泡到父级节点。

    $(”#entryform input”).bind(”focus”, function(){
        $(this).addClass(”selected”);
    }).bind(”blur”, function(){
        $(this).removeClass(”selected”);
    });
    改进成
    $(”#entryform”).bind(”focus”, function(e){
        var $cell = $(e.target); // e.target 捕捉到触发的目标元素
        $cell.addClass(”selected”);
    }).bind(”blur”, function(e){
        var $cell = $(e.target);
        $cell.removeClass(”selected”);
    });
    同理,
    $(’#myTable td’).click(function(){
        $(this).css(’background’, ‘red’);
    });
     改进方式:

    $(’#myTable’).click(function(e) {

         var $clicked = $(e.target);

         $clicked.css(’background’, ‘red’);

    });

    在改进方式中,你只为一个元素绑定了1个事件

    6,推迟到 $(window).load 

    $(document).ready可以在页面渲染时,其它元素还没下载完成就执行。

    $(window).load在所有的html(包括<iframe>)被下载完成后执行
    $(window).load(function(){
        // 页面完全载入后才初始化的jQuery函数.
    });
    一些特效的功能,例如拖放, 视觉特效和动画, 预载入隐藏图像等等,都是适合这种技术的场合。

     7,压缩JavaScript

    在线压缩地址: http://dean.edwards.name/packer/
    8,尽量使用ID代替Class
    ID选择器的速度是最快的。所以在HTML代码中,能使用ID的尽量使用ID来代替class。
    9,给选择器一个上下文

    jQuery选择器中有一个这样的选择器,它能指定上下文。
    jQuery( expression, context );
    通过它,能缩小选择器在DOM中搜索的范围,达到节省时间,提高效率。
    普通方式:
    $(’.myDiv’)
    改进方式:
    $(’.myDiv’ , $(”#listItem”) )

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

    这个方法比较占用资源。所以请尽量不要使用它。
    11,子选择器和后代选择器
    后代选择器经常用到,比如:$(”#list  p”);
    后代选择器获取的是元素内部所有元素。

    而有时候实际只要获取 子元素,那么就不应该使用后代选择器。
    应该使用子选择器,代码如下:
    $(”#list > p”);

    12,使用data()方法存储临时变量

    下面是一段非常简单的代码,

    $(function(){

        var flag = false;

        $(”button”).click(function(){

            if(flag){

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

                flag=false;

            }else{

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

                flag=true;

            }

        });

    })

    改用data()方式后,代码如下:

    $(function(){

        $(”button”).click(function(){

            if( $(”p”).data(”flag”) ){

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

                $(”p”).data(”flag”,false);

            }else{

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

                 $(”p”).data(”flag”,true);

            }

        });

    })

    摘自http://blog.guojie1984.cn/?p=88

  • 相关阅读:
    搜索引擎
    Mybatis springmvc面试题
    spring框架面试题
    数据库
    javaWEB面试题
    JavaWeb
    SpringCloud2
    网络
    比特币网络架构及节点发现分析
    Github推荐一个国内牛人开发的超轻量级通用人脸检测模型
  • 原文地址:https://www.cnblogs.com/webfpc/p/1575093.html
Copyright © 2020-2023  润新知