一、合適的選擇器
JQuery 選擇器提供豐富的選擇器來定位DOM元素,
基本選擇器
#id、.class、element、*等;那他們哪個(gè)更高效呢?
第一選擇:
$("#id")
第二選擇:
$("p"),$("div")
第三選擇(選擇性使用) :
$(".class")
第四選擇
$("[attribute =value"])
第五選擇(偽選擇器,其屬于 JQuery 過濾選擇器中的可見性過濾選擇器)
$(":hidden")
PS:1、盡量選擇Id選擇器,
2、給選擇器指定上下文
其類似于CSS選擇器,CSS選擇器中三大特性 --特殊性、繼承、層疊中的特殊性:
1、對于選擇器給定的各個(gè)ID屬性值(#id):加上 0,1,0,0
2、對于選擇器給定的各個(gè)類屬性值(.class、屬性選擇、偽類如:visited、:link ) : 加上0,0,1,0
3、對于選擇器給定的各個(gè)元素(element): 加上0,0,0,1
例子:html >body table tr[td="totals"] td ul > li 則為0,0,0,7+ 0,0,1,0 = 0,0,1,7;
li #answer 則為0,0,0,1 + 0,1,0,0 = 0,1,0,1
根據(jù)這種運(yùn)算可以得出勝出規(guī)則:
比如:0,1,0,1 大于 0,0,1,7 ,則其特殊性越高。選擇的優(yōu)先級越高。
* 屬于通配選擇器,其是 0 特殊性
二、數(shù)組方式使用JQuery對象
在性能方面,建議使用for 或者 while 來處理,而不是$.each()
如:
$.each(array ,function (i)) {
array[i] = i ;
}
改為:
var array = new Array ();
for (var i = 0 ;i< array.length ;i++) {
array[i] = i;
}
三、事件代理
例子: 單擊單元格,單元格變色
$('#table td").click(function()) {
$(this).css("backgroud","blue") ;
}
如果表格有100個(gè)td單元格,那么就綁定了100個(gè)事件,性能會(huì)很差。
可以使用事件代理:
$('#table").click(function(e)) {
var $clicked = $(e.target); // e.target 得到觸發(fā)的目標(biāo)元素
$clicked.css("backgroud","blue") ;
}
其只綁定一個(gè)事件,性能提高
四、join 拼接字符串
將數(shù)組轉(zhuǎn)換為字符串
一般在長字符串時(shí),這個(gè)性能提升才會(huì)明顯
var array = [] ;
for(var i = 0 ; i< 100; i++){
array[i] = '<li>'+i+'</li>';
}
$("#list").html(array.join(' '));
可以聯(lián)系java中StringUtils 的Join(), 以及StringBulider,StringBuffer的用法比較使用。
五、使用原生的JS方法
常用判斷一個(gè)多選框是否選中:
var $ck = $("#ck");
$ck.click(function()) {
if($ck.is(":checked")) {
alert("checked");
}
})
改為:
var $ck = $("#ck");
var ck = $ck.get(0); // JQuery 對象轉(zhuǎn)化為DOM對象,其有2種方式 JQuert.get(0)或者JQuery[0]
$ck.click(function()) {
if(ck.checked)) {
alert("checked");
}
})
六、盡量使用JQuery優(yōu)雅的鏈?zhǔn)讲僮?/span>
其可以減少對象的隨意創(chuàng)建,也可以創(chuàng)建一個(gè)對象到全局環(huán)境,讓其他函數(shù)function調(diào)用。
新聞熱點(diǎn)
疑難解答
圖片精選