I am trying to alter the button text for a expand/collapse button. Basically, a user clicks “Collapse” and I perform a slideToggle and when the slideToggle is done, I change the button text to “Expand” and vice-versa.
The following code works great however if you click the expand/collapse button rapidly, it looses its mind and shows “Expand” when it’s already expanded or “Collapse” when it’s already collapsed.
Any tips are appreciated.
Thanks!
function toggleBox( button, box ){
if($(box).is(“:hidden”)) {
$(box).slideToggle(“slow”, function(){
$(button).html(“Collapse”);
});
}
else {
$(box).slideToggle(“slow”, function(){
$(button).html(“Expand”);
});
}
}
In your case, it’d be safer to do the check as you’re setting the text, after the animation finishes, like this:
Currently you’re checking when it starts, but remember it’s not
:hiddenuntil it finishes hiding, so until the moment theslideUpcompletes, it’s still:visible🙂