jquery fx: Closes #3219. jQuery.fn.toggle can accept a boolean argument indicating...
authorAriel Flesler <aflesler@gmail.com>
Thu, 25 Dec 2008 20:13:42 +0000 (20:13 +0000)
committerAriel Flesler <aflesler@gmail.com>
Thu, 25 Dec 2008 20:13:42 +0000 (20:13 +0000)
src/fx.js
test/unit/fx.js

index 626119b..2d6433d 100644 (file)
--- 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){
index f8b6383..8af9297 100644 (file)
@@ -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 = {