]> source.dussan.org Git - jquery.git/commitdiff
Attributes: Use simpler boolean check vs a function call
authorDave Methvin <dave.methvin@gmail.com>
Wed, 14 Oct 2015 19:07:53 +0000 (15:07 -0400)
committerRichard Gibson <richard.gibson@gmail.com>
Sun, 25 Oct 2015 19:00:51 +0000 (15:00 -0400)
Ref gh-2491

(cherry picked from commit 4bf1a09522955eb52de1fafb4ee1ecc5982b7a3e)

src/attributes/classes.js
test/unit/attributes.js

index 1d24a1851ee179a6e35ecf4cd94b2beb5d3e37a7..15a37bc9930aaf24307c1759e80a9add2ab71d39 100644 (file)
@@ -100,10 +100,7 @@ jQuery.fn.extend( {
 
        toggleClass: function( value, stateVal ) {
                var type = typeof value,
-                       classNames = type === "string" ? value.match( rnotwhite ) : "",
-                       checker = typeof stateVal === "boolean" ?
-                               function() { return !stateVal; } :
-                               jQuery.fn.hasClass;
+                       classNames = type === "string" ? value.match( rnotwhite ) : [];
 
                return this.each( function( i ) {
                        var className,
@@ -118,7 +115,7 @@ jQuery.fn.extend( {
                        // Toggle individual class names based on presence or stateVal
                        while ( ( className = classNames[ c++ ] ) ) {
 
-                               if ( checker.call( self, className ) ) {
+                               if ( stateVal === false || stateVal !== true && self.hasClass( className ) ) {
                                        self.removeClass( className );
                                } else {
                                        self.addClass( className );
index 028931c70794f613c04d3d6db850c6d50c352379..ba9d551aa19234a1bb1c7c5f2356d36fd4621773 100644 (file)
@@ -1220,7 +1220,7 @@ QUnit.test( "removeClass(undefined) is a no-op", function( assert ) {
 } );
 
 var testToggleClass = function( valueObj, assert ) {
-       assert.expect( 9 );
+       assert.expect( 11 );
 
        var e = jQuery( "#firstp" );
        assert.ok( !e.is( ".test" ), "Assert class not present" );
@@ -1232,8 +1232,12 @@ var testToggleClass = function( valueObj, assert ) {
        // class name with a boolean
        e.toggleClass( valueObj( "test" ), false );
        assert.ok( !e.is( ".test" ), "Assert class not present" );
+       e.toggleClass( valueObj( "test" ), false );
+       assert.ok( !e.is( ".test" ), "Assert class still not present" );
        e.toggleClass( valueObj( "test" ), true );
        assert.ok( e.is( ".test" ), "Assert class present" );
+       e.toggleClass( valueObj( "test" ), true );
+       assert.ok( e.is( ".test" ), "Assert class still present" );
        e.toggleClass( valueObj( "test" ), false );
        assert.ok( !e.is( ".test" ), "Assert class not present" );