zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/zhangyanlei183/p/4042576.html
Copyright © 2011-2022 走看看