Skip to content

Commit

Permalink
make sure toggleClass does not delete classNames when forcefully remo…
Browse files Browse the repository at this point in the history
…ving classes and they are already removed
  • Loading branch information
brandonaaron committed May 2, 2009
1 parent 5e6e538 commit e45b416
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
9 changes: 4 additions & 5 deletions src/attributes.js
Expand Up @@ -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){
Expand Down
22 changes: 14 additions & 8 deletions test/unit/attributes.js
Expand Up @@ -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" );
Expand Down Expand Up @@ -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");
Expand Down

0 comments on commit e45b416

Please sign in to comment.