这几条JQuery提升性能的规则你需要牢记

Posted on 2017-03-21 by 毛三胖

摘要

本文部分整理了JQuery性能提升的一些方法,内容综合自artzstudio,viralpatel,htmlgoodies等网站,希望对大家有所帮助。这些规则虽然简单,但如果不遵循就会影响程序执行效率,增加浏览器的负担。


1 优先使用ID选择器和以ID开头的选择器

//ID选择器性能最佳
$("#myDiv")
//以ID开头,提高效率
$("#myDiv .red")

2 类选择之前加元素选择提高效率

//元素(tag)选择器效率仅次于ID选择器,优于类(class)选择器
$("#myList li.active")

3 缓存JQuery对象

//错误,做了两次选择
$("#myList li").css('border','3px');
$("#myList li").css('color','red');
//缓存对象,提高效率
var $li = $("#myList li")
$li.css('border','3px');
$li.css('color','red');

4 利用链式命令,减少代码量

//链式命令,减少代码量
$("#myList li").css('border','3px')
               .css('color','red');

5 使用子查询

//一次全局查找加两次子查询优于两次全局查找
var $list = $("#myList");
var $actives = $list.find('li.active');
var $in_actives = $list.find('li.in_active');

6 减少DOM的操作次数(DOM操作很慢)

//操作一次DOM,而不要操作100次
var lis = ""; 
for (var i=0, i<100; i++) {
 lis += '<li>' + i + '</li>';
}
$('#myList').html(lis);

7 许多节点调用相同的函数时,利用事件委托

//效率较低
$('#myList li').bind('click', function(){
});
//效率较高
$('#myList').bind('click', function(e){
 if ($(e.target).nodeName === 'LI') {
 }
});

8 把不重要的功能(如拖放,效果等)放在$(window).load执行

//不要把所有都放在$(document).ready中
$(window).load(function(){
 // 在页面所有对象加载完执行
});

9 较长的字符串拼接不要使用concat(),要使用join()

//join()比concat()效率更好
var list_items = [];
for (var i=0; i<=10; i++) { 
    list_items[i] = '<li>Item '+i+'</li>';
}
$('#myList').html(list_items.join(''));

10 使用for循环,不要使用$.each循环

//js原生方法效率更好
var js_array = new Array ();
for (var i=0; i<10000; i++) {
    js_array[i] = i;
}

11使用元素前,先检查其是否存在

//检查id为myDiv的元素是否存在
if($("#myDiv").length) {
}

12 函数总是返回false

$('#myDiv').click (function () {
    return false;
});

13 使用html5的data属性

//<div id="myDiv" data-value="111"></div>
$("#myDiv").data("value");

14 使用最新的版本及CDN

15 压缩你的JS代码

16 保持代码规范整洁

本文部分整理了JQuery性能提升的一些方法,内容综合自artzstudio,viralpatel,htmlgoodies等网站,希望对大家有所帮助。本人菜鸟一枚,如有错误,请评论指正。