IT技术博客大学习 共学习 共进步

编写高性能的jQuery代码

WEB前端开发 2010-11-07 08:47:10 浏览 2,483 次

    请记住 - 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表格呈现 (阅读 48,164)
  2. 分享一个JQUERY颜色选择插件 (阅读 14,062)
  3. jQuery插件---轻量级的弹出窗口wBox. (阅读 10,623)
  4. 10个强大的Ajax jQuery文件上传程序 (阅读 8,721)
  5. jQuery性能优化指南 (阅读 8,645)
  6. jQuery的data()方法 (阅读 8,503)
  7. jQuery Color Animations颜色动画插件 (阅读 8,342)
  8. 精于图片处理的10款jQuery插件 (阅读 7,260)
  9. 配合jquery实现异步加载页面元素 (阅读 6,283)
  10. jQuery中getJSON跨域原理详解 (阅读 6,263)