jQuery 的each循環比原生的for循環性能相差幾十倍。javascript
儘可能使用ID,類型,類選擇器,避免使用屬性選擇器。css
儘可能使用ID,類,類型選擇器,避免屬性選擇器。ID,類,類型都有原生的方法,屬性選擇器須要遍歷整個DOM,還須要讀取每一個節點的屬性進行判斷,性能很低。html
儘可能不使用祖孫的選擇器,使用父子關係更爲明確的選擇器,也就是使用更能縮小範圍的選擇器,避免大量的遍歷。java
定義局部變量,緩存要使用屢次的結果,一方面避免反覆調用,反覆在原型鏈上查找,另外一方面局部變量能夠加快訪問速度。web
$('#item').css ('color', '#123456'); $('#item').html ('hello'); $('#item').css ('background-color', '#ffffff');
改成:數組
$('#item').css ('color', '#123456').html ('hello').css ('background-color', '#ffffff'); // 或者 var item = $('#item'); item.css ('color', '#123456'); item.html ('hello'); item.css ('background-color', '#ffffff');
修改DOM就會致使瀏覽器從新創建DOM樹和渲染,而這在web中是很是耗時的操做。 瀏覽器
var item = $('#list'); for (var i=0; i<1000; i++) { item.append (i); }
改成緩存
var list = ''; for (var i=0; i<1000; i++) { list += '<li>'+i+'</li>'; } ('#list').html (list);
或者app
var list = []; for (var i=0; i<1000; i++) { list[i]= '<li>'+i+'</li>'; } ('#list').html (list.join(""));
再或者性能
var list = []; for (var i=0; i<1000; i++) { list[i]= '<li>'+i+'</li>'; } ('#list')[0].innerHTML =list.join("");
對於很大String的鏈接搓澡不要使用concat,使用數組的join