jQuery最佳实践完整篇

2020-05-23 06:08:32易采站长站整理


具体的例子和比较结果,请看这里。


4. 不要过度使用jQuery


jQuery速度再快,也无法与原生的javascript方法相比。所以有原生方法可以使用的场合,尽量避免使用jQuery。


请看下面的例子,为a元素绑定一个处理点击事件的函数:



  $(‘a’).click(function(){


    alert($(this).attr(‘id’));


  });


这段代码的意思是,点击a元素后,弹出该元素的id属性。为了获取这个属性,必须连续两次调用jQuery,第一次是$(this),第二次是attr(‘id’)。


事实上,这种处理完全不必要。更正确的写法是,直接采用javascript原生方法,调用this.id:



  $(‘a’).click(function(){


    alert(this.id);


  });


根据测试,this.id的速度比$(this).attr(‘id’)快了20多倍。


5. 做好缓存


选中某一个网页元素,是开销很大的步骤。所以,使用选择器的次数应该越少越好,并且尽可能缓存选中的结果,便于以后反复使用。


比如,下面这样的写法就是糟糕的写法:



  jQuery(‘#top’).find(‘p.classA’);


  jQuery(‘#top’).find(‘p.classB’);


更好的写法是:



  var cached = jQuery(‘#top’);


  cached.find(‘p.classA’);


  cached.find(‘p.classB’);


根据测试,缓存比不缓存,快了2-3倍。


6. 使用链式写法


jQuery的一大特点,就是允许使用链式写法。



  $(‘div’).find(‘h3’).eq(2).html(‘Hello’);


采用链式写法时,jQuery自动缓存每一步的结果,因此比非链式写法要快。根据测试,链式写法比(不使用缓存的)非链式写法,大约快了25%。


7. 事件的委托处理(Event Delegation)


javascript的事件模型,采用”冒泡”模式,也就是说,子元素的事件会逐级向上”冒泡”,成为父元素的事件。


利用这一点,可以大大简化事件的绑定。比如,有一个表格(table元素),里面有100个格子(td元素),现在要求在每个格子上面绑定一个点击事件(click),请问是否需要将下面的命令执行100次?



  $(“td”).bind(“click”, function(){


    $(this).toggleClass(“click”);