jquery性能优化

最近学习了锋利的jqury,记录以下优化jqury的方法,个人感觉挺不错的,学习jqury的可以看一下这本书

一、使用最新的jq

二、标签选择器

建议从ID选择器开始, 因为在jquery里获取id是直接封装js的document.getElementById() 性能最佳; $("#Id");

标签选择器,直接封装document.getElementsByTagName() 性能第二 $("p");

三、缓存对象

var $id =  $("#Id"); //使用变量保存起来,这样可以在多个函数里调用,就不用每次在函数里重新获取

四、减少的DOM操作

错误的:
var  list = [a,b,c,d];  //假如这里有100条数据
var $list = $(".list")
for(var i = 0; i< list.length; i++){
    $list.append("
  • "+list[i]+"
  • "); //在这里重复进行了100次dom操作, } 或者是 var list = [a,b,c,d]; //假如这里有100条数据 for(var i = 0; i< list.length; i++){ var $list = $(".list") //重复获取了100次 $list.append("
  • "+list[i]+"
  • "); //在这里重复进行了100次dom操作, } 正确的: var list = [a,b,c,d]; //假如这里有100条数据 var $list = $(".list") var mylist = "" for(var i = 0; i< list.length; i++){ mylist += "
  • "+list[i]+"
  • "; } $list.append(mylist); //在这里只进行了一次dom操作

    五、数组方式使用jqury对象

    使用jqury选择器获取结果是一个jqury对象,然而,jquery类库会让你感觉你正在使用一个定义了索引和长度的数组,

    在性能方面,建议使用简单for或者while循环来处理,而不是$.each(); 这样能使你的代码更快。

    $.each(array,function(i){
        array[i] = i;
    })
    使用for代替each方法:
    var array = new Array();
    for(var i = 0; i

    六、事件代理

    1、$("#list td").click(function(){
        $(this).css("background","red"); //假如有100个td元素,在使用这个方式时,就绑定了100个事件,这将带来很负面的性能影响
    })
    
    2、
    $("#list").click(function(e){
        var $list = (e.target);
        $list.css("background","red")  //在这会发现点#list 的时候就会把list的背景也变成红色, 
    })
    
    3、
    $("#list").on("click",function(e){
    		var $list  =  $(e.target);
    		var istd = $list.prop("tagName");  //获取标签类型 
    		if(istd == "TD"){        //如果标签为td就执行以下的步骤 
    			$list.css({"background":"red","color":"white"})
    		}
    })

    七、封装成插件

    把所有代码都封装成插件,

    八 、使用json()来拼接字符串

    优化长字符串

    var $div = $("div")
    var array = [];
    for(var i = 0; i<=1000; i++){
        array[i] = ""+i+""
    }
    $div.html(array.join("")); 

    九、合理使用html5的data属性

    var ArrData = $("#arr").data("value") console.log(ArrData);

    十、尽量使用原生javascript

    十一、压缩js

    你可能感兴趣的:(js)