make sure toggleClass does not delete classNames when forcefully removing classes...
authorBrandon Aaron <brandon.aaron@gmail.com>
Sat, 2 May 2009 22:35:39 +0000 (22:35 +0000)
committerBrandon Aaron <brandon.aaron@gmail.com>
Sat, 2 May 2009 22:35:39 +0000 (22:35 +0000)
src/attributes.js
test/unit/attributes.js

index 04562ff..f3e1b4c 100644 (file)
@@ -141,13 +141,12 @@ jQuery.each({
                                jQuery.className[ state ? "add" : "remove" ]( this, className );
                        }
                } else if ( type === "undefined" || type === "boolean" ) {
-                       // toggle whole className
-                       if ( this.className || classNames === false ) {
+                       if ( this.className ) {
+                               // store className if set
                                jQuery.data( this, "__className__", this.className );
-                               this.className = "";
-                       } else {
-                               this.className = jQuery.data( this, "__className__" ) || "";
                        }
+                       // toggle whole className
+                       this.className = this.className || classNames === false ? "" : jQuery.data( this, "__className__" ) || "";
                }
        }
 }, function(name, fn){
index d4d6824..63e587a 100644 (file)
@@ -282,7 +282,7 @@ test("removeClass(String) - simple", function() {
 });
 
 test("toggleClass(String|boolean|undefined[, boolean])", function() {
-       expect(16);
+       expect(17);
 
        var e = jQuery("#firstp");
        ok( !e.is(".test"), "Assert class not present" );
@@ -310,17 +310,23 @@ test("toggleClass(String|boolean|undefined[, boolean])", function() {
        // toggleClass storage
        e.toggleClass(true);
        ok( e.get(0).className === "", "Assert class is empty (data was empty)" );
-       e.addClass("testD");
-       ok( e.is(".testD"), "Assert class present" );
+       e.addClass("testD testE");
+       ok( e.is(".testD.testE"), "Assert class present" );
        e.toggleClass();
-       ok( !e.is(".testD"), "Assert class not present" );
-       ok( e.data('__className__') === 'testD', "Assert data was stored" );
+       ok( !e.is(".testD.testE"), "Assert class not present" );
+       ok( e.data('__className__') === 'testD testE', "Assert data was stored" );
        e.toggleClass();
-       ok( e.is(".testD"), "Assert class present (restored from data)" );
+       ok( e.is(".testD.testE"), "Assert class present (restored from data)" );
        e.toggleClass(false);
-       ok( !e.is(".testD"), "Assert class not present" );
+       ok( !e.is(".testD.testE"), "Assert class not present" );
        e.toggleClass(true);
-       ok( e.is(".testD"), "Assert class present (restored from data)" );
+       ok( e.is(".testD.testE"), "Assert class present (restored from data)" );
+       e.toggleClass();
+       e.toggleClass(false);
+       e.toggleClass();
+       ok( e.is(".testD.testE"), "Assert class present (restored from data)" );
+       
+       
 
        // Cleanup
        e.removeClass("testD");