jQuery autohide element after 5 seconds

JqueryJquery Ui

Jquery Problem Overview


Is it possible to automatically hide an element in a web page 5 seconds after the form loads using jQuery?

Basically, I've got

<div id="successMessage">Project saved successfully!</div>

that I'd like to disappear after 5 seconds. I've looked at jQuery UI and the hide effect but I'm having a little trouble getting it work the way I want it to.

<script type="text/javascript">
        $(function() {
            function runEffect() {

                var selectedEffect = 'blind';

                var options = {};

                $("#successMessage").hide(selectedEffect, options, 500);
            };
    		
	        $("#successMessage").click(function() {
		        runEffect();
		        return false;
	        });
        });
    </script>

I'd like the click function to be removed and add a timeout method that calls the runEffect() after 5 seconds.

Jquery Solutions


Solution 1 - Jquery

$('#selector').delay(5000).fadeOut('slow');

Solution 2 - Jquery

$(function() {
    // setTimeout() function will be fired after page is loaded
    // it will wait for 5 sec. and then will fire
    // $("#successMessage").hide() function
    setTimeout(function() {
        $("#successMessage").hide('blind', {}, 500)
    }, 5000);
});

Note: In order to make you jQuery function work inside setTimeout you should wrap it inside

function() { ... }

Solution 3 - Jquery

You can try :

setTimeout(function() {
  $('#successMessage').fadeOut('fast');
}, 30000); // <-- time in milliseconds

If you used this then your div will be hide after 30 sec.I also tried this one and it worked for me.

Solution 4 - Jquery

Please note you may need to display div text again after it has disappeared. So you will need to also empty and then re-show the element at some point.

You can do this with 1 line of code:

$('#element_id').empty().show().html(message).delay(3000).fadeOut(300);

If you're using jQuery you don't need setTimeout, at least not to autohide an element.

Solution 5 - Jquery

You use setTimeout on you runEffect function :

function runEffect() {
    setTimeout(function(){
        var selectedEffect = 'blind';
        var options = {};
        $("#successMessage").hide(selectedEffect, options, 500)
     }, 5000);
}

Solution 6 - Jquery

I think, you could also do something like...

setTimeout(function(){
    $(".message-class").trigger("click");
}, 5000);

and do your animated effects on the event-click...

$(".message-class").click(function() {
    //your event-code
});

Greetings,

Solution 7 - Jquery

jQuery(".success_mgs").show(); setTimeout(function(){ jQuery(".success_mgs").hide();},5000);

Solution 8 - Jquery

This is how you can set the timeout after you click.

$(".selectorOnWhichEventCapture").on('click', function() {
	setTimeout(function(){
		$(".selector").doWhateverYouWantToDo();
	}, 5000);
});

//5000 = 5sec = 5000 milisec

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionChris ConwayView Question on Stackoverflow
Solution 1 - JqueryjustmeolView Answer on Stackoverflow
Solution 2 - JqueryKonstantin TarkusView Answer on Stackoverflow
Solution 3 - JquerysweetyView Answer on Stackoverflow
Solution 4 - JqueryCrisView Answer on Stackoverflow
Solution 5 - JqueryChristian C. SalvadóView Answer on Stackoverflow
Solution 6 - JqueryPetertjeView Answer on Stackoverflow
Solution 7 - Jqueryuser3778023View Answer on Stackoverflow
Solution 8 - JqueryAakash PahujaView Answer on Stackoverflow