怎么书写高质量jQuery代码【收藏】

  众所周知,jQuery现在已经非常流行,百度新首页中也已经开始使用jQuery,今天总结下怎么书写更好的jQuery代码使jQuery代码更好、更快的执行,希望本篇jQuery教程一改大家以前不合理的做法。

  1.正确引用jQuery

  尽量在body结束前才引入jQuery,而不是在head中。

  借助第三方提供的CDN来引入jQuery,同时注意当使用第三方CDN出现问题时,要引入本地的jQuery文件。

  如果在前引入script文件的话,就不用写document.ready了,因为这时执行js代码时DOM已经加载完毕了。

  2.优化jQuery选择器

  高效正确的使用jQuery选择器是熟练使用jQuery的基础,而掌握jQuery选择器需要一定的时间积累,我们开始学习jQuery时就应该注意选择器的使用。

  1. <div id="nav" class="nav">
  2.     <a class="home" href="http://blog.itpub.net/30111374/">巫帝三叔的博客</a>
  3.     <a class="articles" href="http://fk.dayoo.com/jiankangzixun/fukezhishi/">女性健康常识</a>
  4. </div>

  如果我们选择class为home的a元素时,可以使用下边代码:

  1.   $('.home'); //1
  2.   $('#nav a.home'); //2
  3.   $('#nav').find('a.home'); //3
  方法1会使jQuery在整个DOM中查找class为home的a元素,性能可想而知。

  方法2为要查找的元素添加了上下文,在这里变为查找id为nav的子元素,查找性能得到了很大提升。

  方法3使用了find方法,它的速度更快,所以方法三最好。

  关于jQuery选择器的性能优先级,ID选择器快于元素选择器,元素选择器快于class选择器。因为ID选择器和元素选择器是原生的JavaScript操作,而类选择器不是,大家顺便可以看下find context 区别,find() children区别。

  3.缓存jQuery对象

  缓存jQuery对象可以减少不必要的DOM查找,关于这点大家可以参考下缓存jQuery对象来提高性能。

  4.正确使用事件委托

  事件委托可以使事件更好的执行,在动态添加的元素上绑定事件也需要委托来实现,在新版本的jQuery中推荐大家使用on来给元素绑定一个或多个事件的处理函数。

  1. <TABLE id="t"> 
  2.   <TR> 
  3.      <TD>我是单元格</TD>
  4.   </TR>
  5. </TABLE>
  比如我们要在上边的单元格上绑定一个单击事件,不注意的朋友可能随手写成下边的样子:
  1. $('#t').find('td').on('click', function ()
  2.  {
  3.     $(this).css({ 'color': 'red', 'background': 'yellow' });
  4. });

  这样会为每个td绑上事件,在为100个单元格绑定click事件的测试中,两者性能相差7倍之多,好的做法应该是下边写法:

  1. $('#t').on('click', 'td', function () {
  2.     $(this).css({ 'color': 'red', 'background': 'yellow' });
  3. });

  5.精简jQuery代码

  如在上述代码中我们对jQuery代码进行了适当的合并,类似的还有.attr()方法等,我们没有写成下边的方式:

  1. $('#t').on('click', 'td', function () {
  2.     $(this).css('color', 'red').css('background', 'yellow');
  3. });

  6.减少DOM操作

  刚开始使用jQuery时可能会频繁的操作DOM,这是相当耗费性能的。如我们要在body中动态输出一个表格,一些朋友会这样写:

  1. var $t = $('body');
  2. $t.append(');
  3. $t.append('1');
  4. $t.append(''
) ;

  好的做法:

  1. $('body').append('
    1
    ');

  这样在拼接完table串后再添加到body中,对DOM的操作只需一次。群里以前有朋友就因为这个导致在IE下输出时出现问题,而关于字符串的拼接可以参考下最快创建字符串的方法。

  7.不使用jQuery

  原生函数总是最快的,这点不难理解,在代码书写中我们不应该忘记原生JS。

  每条建议并不难理解,但总结全面的话还是要花费不少时间的。如在减少代码段中,如果需要根据条件从数组中得到新数组时,可以使用$.grep() 方法,如果你在使用jQuery时有自己心得的话,欢迎在留言中和大家分享!

  作者:jQuery学习网

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30111374/viewspace-1695322/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30111374/viewspace-1695322/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值