jQuery addClass() 源码解读
addClass: function( value ) { var classes, elem, cur, clazz, j, i = 0, len = this.length, proceed = typeof value === "string" && value; if ( jQuery.isFunction( value ) ) { return this.each(function( j ) { jQuery( this ).addClass( value.call( this, j, this.className ) ); }); } if ( proceed ) {//如果传入的值不是字符串 // The disjunction here is for better compressibility (see removeClass) //如果传入的是假值,"".match() //core_rnotwhite 用于匹配非空格字符,且有g标识,匹配成功返回数组,匹配不成功返回[] classes = ( value || "" ).match( core_rnotwhite ) || []; //rclass = /[\t\r\n\f]/g for ( ; i < len; i++ ) { elem = this[ i ]; //如果elem是元素,cur会返回真值," "或者 " a b " //替换tab符 回车 换行 换页 cur = elem.nodeType === 1 && ( elem.className ? ( " " + elem.className + " " ).replace( rclass, " " ) : " " ); if ( cur ) { j = 0; //遍历,如果原始class中不存在,字符串拼接 while ( (clazz = classes[j++]) ) { if ( cur.indexOf( " " + clazz + " " ) < 0 ) { cur += clazz + " "; } } elem.className = jQuery.trim( cur );//最后两边去空格 } } } return this; }
removeClass与addClass代码类似。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。