jquery fx: Closes #3219. jQuery.fn.toggle can accept a boolean argument indicating show/hide.

This commit is contained in:
Ariel Flesler 2008-12-25 20:13:42 +00:00
parent 0a8f96ac3d
commit 654d946ead
2 changed files with 16 additions and 6 deletions

View file

@ -57,15 +57,18 @@ jQuery.fn.extend({
_toggle: jQuery.fn.toggle, _toggle: jQuery.fn.toggle,
toggle: function( fn, fn2 ){ toggle: function( fn, fn2 ){
var bool = typeof fn === "boolean";
return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ?
this._toggle.apply( this, arguments ) : 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({ this.animate({
height: "toggle", width: "toggle", opacity: "toggle" height: "toggle", width: "toggle", opacity: "toggle"
}, fn, fn2) : }, fn, fn2);
this.each(function(){
jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ]();
});
}, },
fadeTo: function(speed,to,callback){ fadeTo: function(speed,to,callback){

View file

@ -155,13 +155,20 @@ test("stop(clearQueue, gotoEnd)", function() {
}); });
test("toggle()", function() { test("toggle()", function() {
expect(3); expect(6);
var x = jQuery("#foo"); var x = jQuery("#foo");
ok( x.is(":visible"), "is visible" ); ok( x.is(":visible"), "is visible" );
x.toggle(); x.toggle();
ok( x.is(":hidden"), "is hidden" ); ok( x.is(":hidden"), "is hidden" );
x.toggle(); x.toggle();
ok( x.is(":visible"), "is visible again" ); 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 = { var visible = {