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;
}