jQuery技术

jQuery中的循环技巧

字号+ 作者:H5之家 来源:H5之家 2015-09-23 12:06 我要评论( )

jQuery中的循环技巧 是本站 (北京怎么做网站) 中一篇关于jquery网页培训班

1.简单的for-in(事件)

    for ( type in events ) {
        //
    } 

2. 缓存length属性,避免每次都去查找length属性,稍微提升遍历速度, 但是如果遍历HTMLCollection时,性能提升非常明显,因为每次访问HTMLCollection的属性,HTMLCollection都会内部匹配一次所有的节点。
  
    for ( var j = 0, l = handlers.length; j < l; j++ ) { 
        // 
    }

3.不比较下标,直接判断元素是否为true(强制类型转换)。 

    var elem; 
    for ( var i = 0; elems[i]; i++ ) { 
        elem = elems[i]; 
        // ... 
    }

4.遍历动态数组(事件),不能缓存length属性,j++之前先执行j--,保证不会因为数组下标的错误导致某些数组元素遍历不到。 

    for ( j = 0; j < eventType.length; j++ ) { 
        eventType.splice( j--, 1 );    //splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
    } 
    for ( var i = 1; i < results.length; i++ ) { 
        if ( results[i] === results[ i - 1 ] ) { 
            results.splice( i--, 1 ); 
        } 
    }

5.迭代过程中尽可能减少遍历次数(事件),如果你能知道从哪里开始遍历的话,这里是 pos 。
 
    for ( j = pos || 0; j < eventType.length; j++ ) { 
        // 
    }

6.倒序遍历(事件),减少了几个字符:循环条件判断,合并i自减和i取值,倒序遍历会有浏览器优化,稍微提升遍历速度。 

    for ( var i = this.props.length, prop; i; ) { 
        prop = this.props[ --i ]; 
        event[ prop ] = originalEvent[ prop ]; 
    }

7.倒序遍历,中规中矩,倒序会有浏览器优化,稍微提升遍历速度。
  
    for ( j = tbody.length - 1; j >= 0 ; --j ) { 
        if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) { 
            tbody[ j ].parentNode.removeChild( tbody[ j ] ); 
        } 
    }

8.不判断下标,直接判断元素(选择器)。
  
    for ( i = 0; checkSet[i] != null; i++ ) { 
        if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) { 
            results.push( set[i] ); 
        } 
    } 
    for ( ; array[i]; i++ ) { 
        ret.push( array[i] ); 
    }

9.不判断下标,取出元素然后判断元素(选择器)。
  
    for ( var i = 0; (item = curLoop[i]) != null; i++ ) { 
        //
    }

10.遍历DOM子元素。
  
    for ( node = parent.firstChild; node; node = node.nextSibling ) { 
        if ( node.nodeType === 1 ) { 
            node.nodeIndex = ++count; 
        } 
    }

11.动态遍历DOM子元素(DOM遍历),dir参数表示元素的方向属性,如parentNode、nextSibling、previousSibling、lastChild和firstChild。
  
    for ( ; cur; cur = cur[dir] ) { 
        if ( cur.nodeType === 1 && ++num === result ) { 
            break; 
        } 
    }

12. while检查下标i 。
 
    var i = promiseMethods.length; 
    while( i-- ) { 
        obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ]; 
    }

13. while检查元素。
  
    while( (type = types[ i++ ]) ) { 
        // 
    }

14.while遍历动态数组(AJAX),总是获取第一个元素,检查是否与特殊值相等,如果相等就从数组头部移除,直到遇到不相等的元素或数组为空。
  
    while( dataTypes[ 0 ] === "*" ) { 
        dataTypes.shift(); 
        if ( ct === undefined ) { 
            ct = s.mimeType || jqXHR.getResponseHeader( "content-type" ); 
        } 
    } 

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 7个有用的jQuery小技巧

    7个有用的jQuery小技巧

    2016-02-26 13:02

  • jQuery制作select双向选择列表

    jQuery制作select双向选择列表

    2016-02-26 11:00

  • 全面详细的jQuery常见开发技巧手册

    全面详细的jQuery常见开发技巧手册

    2016-02-26 10:02

  • 强大的jQuery移动插件Top 10

    强大的jQuery移动插件Top 10

    2016-02-25 09:05

网友点评