diff --git a/src/attributes/classes.js b/src/attributes/classes.js index 15a37bc99..72aed146d 100644 --- a/src/attributes/classes.js +++ b/src/attributes/classes.js @@ -13,9 +13,7 @@ function getClass( elem ) { jQuery.fn.extend( { addClass: function( value ) { var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0, - len = this.length, - proceed = typeof value === "string" && value; + i = 0; if ( jQuery.isFunction( value ) ) { return this.each( function( j ) { @@ -23,13 +21,10 @@ jQuery.fn.extend( { } ); } - if ( proceed ) { + if ( typeof value === "string" && value ) { + classes = value.match( rnotwhite ) || []; - // The disjunction here is for better compressibility (see removeClass) - classes = ( value || "" ).match( rnotwhite ) || []; - - for ( ; i < len; i++ ) { - elem = this[ i ]; + while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); cur = elem.nodeType === 1 && ( " " + curValue + " " ).replace( rclass, " " ); @@ -56,20 +51,22 @@ jQuery.fn.extend( { removeClass: function( value ) { var classes, elem, cur, curValue, clazz, j, finalValue, - i = 0, - len = this.length, - proceed = arguments.length === 0 || typeof value === "string" && value; + i = 0; if ( jQuery.isFunction( value ) ) { return this.each( function( j ) { jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); } ); } - if ( proceed ) { - classes = ( value || "" ).match( rnotwhite ) || []; - for ( ; i < len; i++ ) { - elem = this[ i ]; + if ( !arguments.length ) { + return this.attr( "class", "" ); + } + + if ( typeof value === "string" && value ) { + classes = value.match( rnotwhite ) || []; + + while ( ( elem = this[ i++ ] ) ) { curValue = getClass( elem ); // This expression is here for better compressibility (see addClass) @@ -86,8 +83,8 @@ jQuery.fn.extend( { } } - // only assign if different to avoid unneeded rendering. - finalValue = value ? jQuery.trim( cur ) : ""; + // Only assign if different to avoid unneeded rendering. + finalValue = jQuery.trim( cur ); if ( curValue !== finalValue ) { elem.setAttribute( "class", finalValue ); } @@ -125,12 +122,13 @@ jQuery.fn.extend( { }, hasClass: function( selector ) { - var className = " " + selector + " ", - i = 0, - l = this.length; - for ( ; i < l; i++ ) { - if ( this[ i ].nodeType === 1 && - ( " " + getClass( this[ i ] ) + " " ).replace( rclass, " " ) + var className, elem, + i = 0; + + className = " " + selector + " "; + while ( ( elem = this[ i++ ] ) ) { + if ( elem.nodeType === 1 && + ( " " + getClass( elem ) + " " ).replace( rclass, " " ) .indexOf( className ) > -1 ) { return true;