jquery学习二:jquery性能优化

1、使用最新版本的jQuery类库

2、使用合适的选择器

  (1) $("#id"):定位dom元素 提高性能最佳的方式

  建议从最近的ID元素开始往下搜索:$("#content").find("div");

  (2) $("p"),$("div"):性能也不错,它会调用本地的document.getElementsByTagName()来调用

  (3) $(".class"):对于较早版本的浏览器性能不好,它会遍历节点查找。而对于ie9后的浏览器,它会调用本地的document.getElementsByClassName();

  (4) $("[attribute=value]"):此方法性能不是太好,虽然很多现代浏览器支持querySelectorAll(),但是不同浏览器的性能不同,建议开发中尽量避免这种对性能的伤害

  (4) $(":hidden"):建议尽量不要使用

3、缓存对象

  可能经常会这样写:

  $("#id input:hidden").show();

  $("#id input:hidden").val("aa");

  这样,每执行一行代码,都会查找dom创建一个$("#id input:hidden")对象

  比较好的方式是:

  var $dom = $("#id input:hidden");//缓存变量

  $dom.show();

  $dom.val("aa");

  如果使用链式,更简洁:

  $("#id input:hidden").show().val("aa");

  记住:永远不要把相同的选择器在代码里出现多次

4、循环时的DOM操作

  循环时应尽量少的进行dom操作

  下面这个方式就不是太好:

     var top_100_list = [...];
        $ul = $("#myUl");
        for(var i = 0;i<top_100_list.length;i++){
            $ul.append("<li>"+top_100_list[i]+"</li>");
        }

  更好的方式尽量减少dom操作,这里应该将整个元素字符串在插入DOM之前全部创建好,修改代码如下:

        var top_100_list = [...];
        $ul = $("#myUl");
        var myLi = "";
        for(var i = 0;i<top_100_list.length;i++){
            myLi += "<li>"+top_100_list[i]+"</li>";
        }
        $ul.append(myLi);

5、数组方式使用jQuery对象

  jquery选择器获取的jquery对象,类似一个数组。建议使用for或者while循环获取,代码更快

  注意:jquery对象不会报错,可以使用length属性判断对象是否存在。

6、事件代理

  $("#myTable").click(function(){

    var $clicked = $(e.target);

    $clicked.css("background","red");

  });

7、将代码转化成jquery插件

  如果每次都需要花一段时间去开发类似的jquery代码,那么可以考虑将代码变成插件

8、使用join()来拼接字符串

9、合理利用html5的Data属性

10、尽量使用原生的javaScript代码

11、压缩JavaScript

posted @ 2014-10-22 11:07  菩提明镜  阅读(110)  评论(0编辑  收藏  举报