Each of the methods you mention accept (optionally) a single callback function as a final argument. Neither accept more than one. See:
http://docs.jquery.com/Effects/toggle#speedcallback http://docs.jquery.com/Effects/slideToggle#speedcallback If you want to do something different in one case as opposed to another, check whether the element is visible and then call the appropriate animation method to show or hide, along with anything else you want to do at the same time. Or call the toggle or slideToggle, and put your if inside the single callback, like so: $('#my-element').click(function() { var wasHidden = $('#list-element').is(':hidden'); $('#list-element').slideToggle(200, function(){ if (wasHidden) { $('#status-element').html('show artist index'); console.log('show'); } else { $('#status-element').html('hide artist index'); console.log('hide'); } }); }); - Richard On Mon, Nov 30, 2009 at 1:39 PM, Gavin <failed...@gmail.com> wrote: > I have a simple bit of jQuery that I just can't get working. > > $('#my-element').click(function(){ > $('#list-element').slideToggle(function(){ > $('#status-element').html('show artist > index'); > console.log('show'); > },function(){ > $('#status-element').html('hide artist > index'); > console.log('hide'); > } > ); > }); > > Right? Simple? I've had it working before, but whenever the element is > clicked, the element toggles but the console prints 'hide' every time > and the #status-element never gets changed. I have also tried just > using toggle() instead of slideToggle and also > > slideToggle(200,function(){... > > (including the speed before the callback functions). > > Any ideas would be appreciated! > > Thanks, > Gavin >