IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

编写高性能的jQuery代码

WEB前端开发 2010-11-07 08:47:10 累计浏览 2,536 次
本机暂存

    请记住 - 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. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,350)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  3. WEB系统需要关注的一些点 (累计阅读 18,220)
  4. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  5. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,849)
  6. 天朝第二代身份证号码的验证机制 (累计阅读 14,763)
  7. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  8. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  9. 什么是全栈工程师? (累计阅读 14,038)
  10. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,735)