jQuery autohide elemento após 5 segundos

92

É possível ocultar automaticamente um elemento em uma página da web 5 segundos após o carregamento do formulário usando jQuery?

Basicamente, eu tenho

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

que gostaria de desaparecer após 5 segundos. Eu olhei para a interface do usuário do jQuery e o efeito de ocultação, mas estou tendo um pouco de dificuldade para fazer com que funcione da maneira que desejo.

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

                var selectedEffect = 'blind';

                var options = {};

                $("#successMessage").hide(selectedEffect, options, 500);
            };

            $("#successMessage").click(function() {
                runEffect();
                return false;
            });
        });
    </script>

Gostaria que a função de clique fosse removida e adicionasse um método de tempo limite que chame runEffect () após 5 segundos.

Chris Conway
fonte

Respostas:

115
$(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);
});

Nota : Para fazer sua função jQuery funcionar dentro de setTimeout, você deve envolvê-la dentro

function() { ... }
Konstantin Tarkus
fonte
1
Eu tentei esse código no meu site. Mas não funcionou. Além deste script js, o que mais eu preciso para fazê-lo funcionar? Conselho por favor! Obrigado!
Jornes
1
@Jornes certifique-se de que este script está localizado depois <script src="jquery.js"></script>em sua página.
Konstantin Tarkus
217
$('#selector').delay(5000).fadeOut('slow');
justmeol
fonte
2
Esteja avisado que esta solução quebra $ ('html'). Click (function () {// clique fora de $ ("# selector"). FadeOut ();});
max4ever
Obrigado por esta solução simples.
Ron
Obrigado solução muito simples!
Anahit DEV
9

Podes tentar :

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

Se você usou isso, seu div ficará oculto após 30 seg. Eu também tentei este e funcionou para mim.

docinho
fonte
3

Observe que você pode precisar exibir o texto div novamente depois que ele desaparecer. Portanto, você também precisará esvaziar e reapresentar o elemento em algum ponto.

Você pode fazer isso com 1 linha de código:

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

Se você estiver usando jQuery, você não precisa de setTimeout, pelo menos não para ocultar automaticamente um elemento.

Cris
fonte
1

Use setTimeout na função runEffect:

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

Eu acho que você também poderia fazer algo como ...

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

e fazer seus efeitos animados no evento-clique ...

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

Saudações,

Petertje
fonte
1

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

user3778023
fonte
0

É assim que você pode definir o tempo limite após clicar.

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

// 5000 = 5seg = 5000 milisec

Aakash Pahuja
fonte