jquery core: Closes #1681. jQuery.fn.toggleClass can accept a boolean argument indica...
authorAriel Flesler <aflesler@gmail.com>
Thu, 25 Dec 2008 20:12:18 +0000 (20:12 +0000)
committerAriel Flesler <aflesler@gmail.com>
Thu, 25 Dec 2008 20:12:18 +0000 (20:12 +0000)
src/core.js
test/unit/core.js

index 0e02436..5a098be 100644 (file)
@@ -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 ) {
index 4da992d..5d2f5f4 100644 (file)
@@ -1493,13 +1493,20 @@ test("removeClass(String) - simple", function() {
 });
 
 test("toggleClass(String)", function() {
-       expect(3);
+       expect(6);\r
        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);\r
+       ok( !e.is(".test"), "Assert class not present" );\r
+       e.toggleClass("test", true);\r
+       ok( e.is(".test"), "Assert class present" );\r
+       e.toggleClass("test", false);\r
+       ok( !e.is(".test"), "Assert class not present" );\r
 });
 
 test("removeAttr(String", function() {