国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

JQuery性能優(yōu)化

2024-04-27 15:01:26
字體:
供稿:網(wǎng)友

 一、合適的選擇器

     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)用。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 克东县| 泰宁县| 平南县| 泸州市| 高密市| 正镶白旗| 大关县| 来安县| 重庆市| 苍南县| 武陟县| 什邡市| 池州市| 舒城县| 东乡族自治县| 凌源市| 双柏县| 长顺县| 白沙| 盐边县| 兰西县| 新丰县| 鸡泽县| 昭通市| 太白县| 海林市| 无棣县| 凤台县| 鹿邑县| 平湖市| 肥乡县| 红河县| 靖西县| 荔浦县| 洪泽县| 大新县| 那坡县| 肇庆市| 南召县| 始兴县| 阜南县|