优化jquery代码

写jquery代码时应该注意:

1.定义jQuery变量的时候添加var关键字,可能不加上var,直接$div = $("#div")的话开始不会出现什么问题,但后面一旦出现bug会让你晕死啊!!!

2.不要给每个变量都添加var,你非要var test = "";var $div = $("#div");var $body = $("body");你是有强迫症吗。var test = "",$div = $("#div"),$body = $("body");就好啦。

3.进行dom操作时,请有效地缓存变量内容

$("#testStr").html("设置元素的内容");
$("#testStr").hide();

/*这里注意你每次定义并且调用$('#loading')的时候,都实际创建了一个新的变量,如果你需要重用的话,记住一定要定义到一个变量里,这样可以有效的缓存变量内容,如下:*/

var $text = $("#testStr");
$text.html("设置元素的内容").hide();

 4.尽量把一些代码整合到一起

//不要这样

$button.click(function(){
    $target.css('width','50%');
    $target.css('border','1px solid #202020');
    $target.css('color','#fff');
});


//可以这样

$button.click(function(){
    $target.css({'width':'50%','border':'1px solid #202020','color':'#fff'});
});

5.避免使用全局类型的选择器

  比如:不要 $('.something > *');

       应该 $('.something').children();

6.不要叠加多个ID

  比如:不要 $('#something #children');       

     应该 $('#children');

7.多用逻辑判断||或者&&来提速

  比如:不要

    if(!$something) {
        $something = $('#something ');
    }

    应该:

    $something= $something|| $('#something');

8.尽量使用 .on方法

9.尽量使用最新版本的jQuery

10.选择器使用优先级:#id > tag > class

 

一、正确引用jQuery

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

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

<body>
 <script src="http://libs.baidu.com/jquery/1.8.3/jquery.min.js"></script>
 <script>window.jQuery || document.write('<script src="jquery1.8.min.js">\x3C/script>')</script>
</body>

 二、优化jQuery选择器

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

<div id="nav" class="nav">
 <a class="home" href="http://www.cnblogs.com/liuyan5258/">刘牛牛</a>
 <a class="articles" href="http://www.cnblogs.com/liuyan5258/p/4064841.html">优化jquery代码</a>
</div>

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

$('.home'); //1
$('#nav a.home'); //2
$('#nav').find('a.home'); //3

1.方法1会使jQuery在整个DOM中查找class为home的a元素,性能可想而知。
2.方法2为要查找的元素添加了上下文,在这里变为查找id为nav的子元素,查找性能得到了很大提升。
3.方法3使用了find方法,它的速度更快,所以方法三最好。

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

三、缓存jQuery对象

缓存jQuery对象可以减少不必要的DOM查找,关于这点大家可以参考下缓存jQuery对象来提高性能。(这里有点模糊,记下,花点时间搞清楚

四、正确使用事件委托

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

<table id="t">
 <tr>
  <td>我是单元格</td>
 </tr>
</table>

比如我们要在上边的单元格上绑定一个单击事件,不注意的朋友可能随手写成下边的样子:

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

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

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

五、精简jQuery代码

六、减少DOM操作

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

var $t = $('body');
$t.append('<table>');
$t.append('<tr><td>1</td></tr>');
$t.append('</table>');

 好的做法是这样:

$('body').append('<table><tr><td>1</td></tr></table>');

 

 

 

 
 
 

转载于:https://www.cnblogs.com/liuyan5258/articles/4064841.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值