From 0a8f96ac3d37f637ab433c037d4f807e8ef94bbe Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Thu, 25 Dec 2008 20:12:18 +0000 Subject: [PATCH] jquery core: Closes #1681. jQuery.fn.toggleClass can accept a boolean argument indicating add/remove. --- src/core.js | 6 ++++-- test/unit/core.js | 9 ++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/core.js b/src/core.js index 0e02436..5a098be 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 4da992d..5d2f5f4 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() { -- 1.7.10.4