Yes, this is exactly what I was originally trying to accomplish. The finished code is:
$('a#image').toggle( function() {$('#image-drawer').slideDown();}, function() {$('#image-drawer').slideUp();} ); which is functionally equivalent to: $('a#image').click(function(){ $('#image-drawer') .slideToggle('fast') ; return false; }) Is there one version that is preferred idiomatically? Thanks On Jan 10, 2008, at 10:54 AM, Josh Nathanson wrote: > > You want to use the toggle method, which takes two functions as > arguments. Example: > > $("#link").toggle( > function() { $("#div").css("color","red"); }, > function() { $("#div").css("color","blue"); } > ); > > -- Josh > > > ----- Original Message ----- From: "s.ross" <[EMAIL PROTECTED]> > To: <jquery-en@googlegroups.com> > Sent: Thursday, January 10, 2008 9:06 AM > Subject: [jQuery] Re: n00b q > > >> >> On Jan 10, 2008, at 6:28 AM, Karl Swedberg wrote: >> >>> >>> On Jan 10, 2008, at 1:03 AM, s.ross wrote: >>>> >>>> This is probably one of those asked-and-answered questions, but I >>>> didn't turn it up in a Google search, doc search, or search of this >>>> group. Here it is: I want to click a link to slide a div down and >>>> the >>>> next click slide it back up. Toggle with an effect. Because I am >>>> not >>>> triggering the effect off a click on the element whose visibility I >>>> want to toggle, the Event.Toggle method doesn't seem to fit. Here's >>>> the point I've reached, which doesn't quite work. I'm sure there >>>> is a >>>> really easy way to do this but I'm not seeing it. >>>> >>>> $('a#image').click(function(){ >>>> $('#image-drawer') >>>> .filter(':hidden') >>>> .slideDown() >>>> .end() >>>> .filter(':visible') >>>> .slideUp() >>>> ; >>>> return false; >>>> }); >>>> >>>> Thanks, >>>> >>>> --s >>> >>> Hi S, >>> >>> In your code, it looks like you're first sliding the #image-drawer >>> element down, and then sliding it back up. I think a >>> simple .slideToggle() would work fine in this situation: >>> >>> $('#image').click(function() { >>> $('#image-drawer').slideToggle(); >>> }); >>> >>> Hope that helps. >>> >>> --Karl >> >> Thanks for the quick reply, Karl. That is, indeed what was happening, >> and a slideToggle(); does solve the problem. So for me, the remaining >> question is: Say I wanted something nonstandard -- say a color or >> font >> size change -- to happen on click, and then on the next click have >> the >> element revert. I'm trying to get a sense of the idiom involved with >> getting jQuery to make a click toggle a binary state on another >> element. >> >> Thx, >> >> --s >