diff options
author | Brandon Aaron <brandon.aaron@gmail.com> | 2009-05-02 22:35:39 +0000 |
---|---|---|
committer | Brandon Aaron <brandon.aaron@gmail.com> | 2009-05-02 22:35:39 +0000 |
commit | e45b41602ff483ebed67b5b73008aff5ceb1fe6f (patch) | |
tree | 2d26e9d6fa7fd40a216c42fff41307db23818f81 | |
parent | 5e6e53835e552920db4f88ac0c9eca71aaacbef0 (diff) | |
download | jquery-e45b41602ff483ebed67b5b73008aff5ceb1fe6f.tar.gz jquery-e45b41602ff483ebed67b5b73008aff5ceb1fe6f.zip |
make sure toggleClass does not delete classNames when forcefully removing classes and they are already removed
-rw-r--r-- | src/attributes.js | 9 | ||||
-rw-r--r-- | test/unit/attributes.js | 22 |
2 files changed, 18 insertions, 13 deletions
diff --git a/src/attributes.js b/src/attributes.js index 04562ff8b..f3e1b4cb3 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -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){ diff --git a/test/unit/attributes.js b/test/unit/attributes.js index d4d6824c3..63e587a41 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -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"); |