技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> JavaScript --> 编写高性能的jQuery代码

编写高性能的jQuery代码

浏览:2026次  出处信息

    请记住 - jQuery只是JavaScript。不要以为它有能力来补偿你糟糕的代码。

这意味着,正如我们必须优化JavaScript for语句一样,我们必须优化jQuery的each方法。

// jQuery's each method source
 each: function( object, callback, args ) {
  var name, i = 0,
   length = object.length,
   isObj = length === undefined || jQuery.isFunction(object);
  if ( args ) {
   if ( isObj ) {
    for ( name in object ) {
     if ( callback.apply( object[ name ], args ) === false ) {
      break;
     }
    }
   } else {
    for ( ; i < length; ) {
     if ( callback.apply( object[ i++ ], args ) === false ) {
      break;
     }
    }
   }
  // A special, fast, case for the most common use of each
  } else {
   if ( isObj ) {
    for ( name in object ) {
     if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
      break;
     }
    }
   } else {
    for ( var value = object[0];
     i < length &amp;amp;amp;&amp;amp;amp; callback.call( value, i, value ) !== false; value = object[++i] ) {}
   }
  }
  return object;
 }

    糟糕的代码:


someDivs.each(function() {
      $('#anotherDiv')[0].innerHTML += $(this).text();
});
在每一次遍历循环中都会搜寻anotherDiv 这个ID的元素两次获取innerHTML属性创建了一个jQuery对象,只是为了获取元素的text属性

    优化的代码:


var someDivs = $('#container').find('.someDivs'),
contents = [];
someDivs.each(function() {
contents.push( this.innerHTML );
});
$('#anotherDiv').html( contents.join('') );
这样,在each (for)方法,我们唯一要执行任务的关键是增加一个新的到一个数组…而不是查询DOM中,取代了元素两次获取innerHTML属性等。

建议继续学习:

  1. JQuery实现Excel表格呈现    (阅读:46536)
  2. 分享一个JQUERY颜色选择插件    (阅读:12722)
  3. jQuery插件---轻量级的弹出窗口wBox.    (阅读:9705)
  4. 10个强大的Ajax jQuery文件上传程序    (阅读:7779)
  5. jQuery的data()方法    (阅读:7636)
  6. jQuery性能优化指南    (阅读:7382)
  7. jQuery Color Animations颜色动画插件    (阅读:7145)
  8. 精于图片处理的10款jQuery插件    (阅读:6283)
  9. jQuery中getJSON跨域原理详解    (阅读:5638)
  10. 配合jquery实现异步加载页面元素    (阅读:5388)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1