From 654d946ead6bc1f995c04af2abc02da30cfe4f74 Mon Sep 17 00:00:00 2001 From: Ariel Flesler Date: Thu, 25 Dec 2008 20:13:42 +0000 Subject: [PATCH] jquery fx: Closes #3219. jQuery.fn.toggle can accept a boolean argument indicating show/hide. --- src/fx.js | 13 ++++++++----- test/unit/fx.js | 9 ++++++++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/fx.js b/src/fx.js index 626119bc..2d6433dd 100644 --- a/src/fx.js +++ b/src/fx.js @@ -57,15 +57,18 @@ jQuery.fn.extend({ _toggle: jQuery.fn.toggle, toggle: function( fn, fn2 ){ + var bool = typeof fn === "boolean"; + return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? this._toggle.apply( this, arguments ) : - fn ? + fn == null || bool ? + this.each(function(){ + var state = bool ? fn : jQuery(this).is(":hidden"); + jQuery(this)[ state ? "show" : "hide" ](); + }) : this.animate({ height: "toggle", width: "toggle", opacity: "toggle" - }, fn, fn2) : - this.each(function(){ - jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); - }); + }, fn, fn2); }, fadeTo: function(speed,to,callback){ diff --git a/test/unit/fx.js b/test/unit/fx.js index f8b63835..8af92979 100644 --- a/test/unit/fx.js +++ b/test/unit/fx.js @@ -155,13 +155,20 @@ test("stop(clearQueue, gotoEnd)", function() { }); test("toggle()", function() { - expect(3); + expect(6); var x = jQuery("#foo"); ok( x.is(":visible"), "is visible" ); x.toggle(); ok( x.is(":hidden"), "is hidden" ); x.toggle(); ok( x.is(":visible"), "is visible again" ); + + x.toggle(true); + ok( x.is(":visible"), "is visible" ); + x.toggle(false); + ok( x.is(":hidden"), "is hidden" ); + x.toggle(true); + ok( x.is(":visible"), "is visible again" ); }); var visible = {