jquary坑:关于$.each

jquary坑:关于$.each

jquary中的$.each是用来遍历集合的非常便捷的方法


       以前使用jquary的$.each,仅用来处理数据,未放到单独的方法中,在遍历中返回值。这次在对ajax返回的数据做处理时,调用了一个方法,需要返回值。这个坑就出现于在遍历中用return返回数据。

       $.each中有个特殊语法,当在遍历中return true时,会结束本次循环,继续下次循环,当return false的时候,会结束整个循环。

$.each(result, function (index, item) {
	var con = " ";
	con = getFarMenu(con,result, item);
	if(typeof con == "undefined" || con == null || con == " ") {
		//each中结束本次循环
		return true;
	}else {
		//结束整个循环
		return false;
	}
}

       由each源码可知,这个方法会对return的返回值 c a l l b a c k . c a l l ( o b j [ i ] , i , o b j [ i ] ) \color{DarkTurquoise}callback.call( obj[ i ], i, obj[ i ]) callback.call(obj[i],i,obj[i])进行判断,如果为false,则跳出循环,如果为true或者其他返回值,则向下执行直到方法结束。

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

       所以,如果需要返回值,最好外部定义的变量,做完处理后,在each外部返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值