jQuery show for 5 seconds then hide

josoroma picture josoroma · Aug 7, 2010 · Viewed 207.8k times · Source

I'm using .show to display a hidden message after a successful form submit.

How to display the message for 5 seconds then hide?

Answer

Nick Craver picture Nick Craver · Aug 7, 2010

You can use .delay() before an animation, like this:

$("#myElem").show().delay(5000).fadeOut();

If it's not an animation, use setTimeout() directly, like this:

$("#myElem").show();
setTimeout(function() { $("#myElem").hide(); }, 5000);

You do the second because .hide() wouldn't normally be on the animation (fx) queue without a duration, it's just an instant effect.

Or, another option is to use .delay() and .queue() yourself, like this:

$("#myElem").show().delay(5000).queue(function(n) {
  $(this).hide(); n();
});