海滨擎蟹

jquery $().each和$.each() 遍历

$().each

$().each 在 dom 处理上面用的较多。如果页面有多个 inpu 标签类型为 checkbox,对于这时用 $().each 来处理多个
checkbook,例如:

$("input[name='ch]").each(function(i){
    if($(this).attr("checked")==true)
    {
    //一些操作代码
    }
}
//回调函数是可以传递参数,i就为遍历的索引。

$.each()

遍历一个数组通常用$.each()来处理 例如:

$.each([{name:"JasonLi",email:"1207543053@qq.com"},{name:"hehe",email:"jasonli@seasidecrab,com"}],function(i,n)
{
    alert("索引:"+i+"对应值为:"+n.name);
});
//参数i为遍历索引值,n为当前的遍历对象.

实现原理

其实jQuery里的each方法是通过js里的call方法来实现的。

call 调用一个对象的一个方法,以另一个对象替换当前对象。”网上更多的解释是变换上下文环境,也有说是改变上下文this指针

经典案例:

function add(a,b){
alert(a+b);}

function sub(a,b){
alert(a-b);}

add.call(sub,3,1);

jQuery each 源码

each: function( obj, callback ) {
        var length, i = 0;

        if ( isArrayLike( obj ) ) {
            length = obj.length;
            for ( ; i < length; i++ ) {
                if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
                    break;
                }
            }
        } else {
            for ( i in obj ) {
                if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
                    break;
                }
            }
        }

        return obj;
    }

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »