You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// args is for internal usage only
each: function( obj, callback, args ) {
var value,
i = 0,
length = obj.length,
isArray = isArraylike( obj ); // obj是不是类似数组的对象,比如 {'0':'hello', '1':'world', 'length':2},其实就是为jQuery对象服务啦
if ( args ) { // args,其实没发现这个参数有什么实际作用~~直接跳过看else里面的内容即可,除了callback传的参数不同外无其他区别
if ( isArray ) {
for ( ; i < length; i++ ) {
value = callback.apply( obj[ i ], args );
if ( value === false ) {
break;
}
}
} else {
for ( i in obj ) {
value = callback.apply( obj[ i ], args );
if ( value === false ) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if ( isArray ) { // 处理数组
for ( ; i < length; i++ ) {
value = callback.call( obj[ i ], i, obj[ i ] );
if ( value === false ) {
break;
}
}
} else { // 处理对象
for ( i in obj ) {
value = callback.call( obj[ i ], i, obj[ i ] ); // value 为callback的返回值
if ( value === false ) { // 注意这里,当value===false的时候,直接跳出循环了
break;
}
}
}
}
return obj;
},
jQuery源码-jQuery.fn.each & jQuery.each
先上例子,下面代码的作用是:对每个选中的div元素,都给它们添加一个red类
上面用的的.each,即jQuery.fn.each,其内部是通过jQuery.each实现的
jQuery.fn.each
先贴一下类官方API说明,非常简单,只有两点需要注意
this
指的是当前操作的dom元素下面举两个简单的例子
例子一:
给页面所有的div元素添加red类
例子二
给页面前5个div元素添加red类
如上,用法挺简单,不赘述,详细可查看 http://api.jquery.com/each/
源码
内部是通过jQuery.each实现的,下面就讲下jQuery.each的源码,讲完jQuery.each的源码,jQuery.fn.each的源码就很简单了
jQuery.each
同样是先上一个简单的例子
输出内容如下:
类官方API说明
同样是有两个注意点
this
,是集合中的元素,即下面的valueOfElement
false
,可以跳出循环例子一
例子二
从官网直接copy来的例子,凑合着看
源码
迟到的jQuery.fn.each源码
的确很简单,只要理解了jQuery.each应该就没问题了,没什么好讲的~
结束语
与jQuery.extend、jQuery.fn.extend一样,虽然 jQuery.each、jQuery.fn.each代码很简单,但也扮演了相当重要的作用,jQuery里大量用到了这两个方法,举例:
所以,少年好好掌握each吧~~
The text was updated successfully, but these errors were encountered: