diff --git a/src/core.js b/src/core.js index 0e02436f..5a098beb 100644 --- a/src/core.js +++ b/src/core.js @@ -1284,8 +1284,10 @@ jQuery.each({ jQuery.className.remove( this, classNames ); }, - toggleClass: function( classNames ) { - jQuery.className[ jQuery.className.has( this, classNames ) ? "remove" : "add" ]( this, classNames ); + toggleClass: function( classNames, state ) { + if( typeof state !== "boolean" ) + state = !jQuery.className.has( this, classNames ); + jQuery.className[ state ? "add" : "remove" ]( this, classNames ); }, remove: function( selector ) { diff --git a/test/unit/core.js b/test/unit/core.js index 4da992de..5d2f5f40 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -1493,13 +1493,20 @@ test("removeClass(String) - simple", function() { }); test("toggleClass(String)", function() { - expect(3); + expect(6); var e = jQuery("#firstp"); ok( !e.is(".test"), "Assert class not present" ); e.toggleClass("test"); ok( e.is(".test"), "Assert class present" ); e.toggleClass("test"); ok( !e.is(".test"), "Assert class not present" ); + + e.toggleClass("test", false); + ok( !e.is(".test"), "Assert class not present" ); + e.toggleClass("test", true); + ok( e.is(".test"), "Assert class present" ); + e.toggleClass("test", false); + ok( !e.is(".test"), "Assert class not present" ); }); test("removeAttr(String", function() {