]> source.dussan.org Git - jquery.git/commitdiff
Attributes: removeClass() -> attr("class", "")
authorThomas Tortorini <thomastortorini@gmail.com>
Sun, 11 Oct 2015 08:22:06 +0000 (10:22 +0200)
committerRichard Gibson <richard.gibson@gmail.com>
Sun, 25 Oct 2015 19:07:47 +0000 (15:07 -0400)
- Classes simpliciation

Close gh-2465

(cherry picked from commit 5db1e053098af747330044d5740e5379f2834402)

Conflicts:
src/attributes/classes.js

src/attributes/classes.js

index 15a37bc9930aaf24307c1759e80a9add2ab71d39..72aed146d4b89a8a3f649362609d7c74f0f09790 100644 (file)
@@ -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;