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("<li>"+list[i]+"</li>");  //在这里重复进行了100次dom操作,
}
或者是
var  list = [a,b,c,d];  //假如这里有100条数据
for(var i = 0; i< list.length; i++){
    var $list = $(".list")  //重复获取了100次
    $list.append("<li>"+list[i]+"</li>");  //在这里重复进行了100次dom操作,
}
正确的:
var  list = [a,b,c,d];  //假如这里有100条数据
var $list = $(".list")
var mylist = ""
for(var i = 0; i< list.length; i++){
    mylist += "<li>"+list[i]+"</li>";  
}
$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<array.length; i++){
    array[i] = 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] = "<span>"+i+"</span>"
}
$div.html(array.join("")); 

九、合理使用html5的data属性

<div id="arr" data-value="数据"></div>
var ArrData = $("#arr").data("value")
console.log(ArrData);

十、尽量使用原生javascript

十一、压缩js

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值