Estou tentando criar um efeito no qual a página carrega e, após 5 segundos, a mensagem de sucesso na tela desaparece ou desliza para cima.
Como posso conseguir isso?
Construído em javascript setTimeout .
setTimeout(
function()
{
//do something special
}, 5000);
ATUALIZAÇÃO : você deseja esperar desde que a página termine de carregar, portanto, coloque esse código dentro do seu $(document).ready(...);
script.
ATUALIZAÇÃO 2 : o jquery 1.4.0 introduziu o .delay
método. Confira . Observe que .delay funciona apenas com as filas de efeitos do jQuery.
setTimeout
.Use um timer javascript normal:
Isso aguardará 5 segundos depois que o DOM estiver pronto. Se você quiser esperar até que a página seja realmente
loaded
necessária, use isso:EDIT: Em resposta ao comentário do OP perguntando se existe uma maneira de fazê-lo no jQuery e não usar
setTimeout
a resposta é não. Mas se você quiser torná-lo mais "jQueryish", pode envolvê-lo assim:Você poderia chamá-lo assim:
fonte
Encontrei esta questão e pensei em fornecer uma atualização sobre este tópico. O jQuery (v1.5 +) inclui um
Deferred
modelo que (apesar de não seguir as especificações Promises / A até o jQuery 3) é geralmente considerado como uma maneira mais clara de abordar muitos problemas assíncronos. A implementação de um$.wait()
método usando essa abordagem é particularmente legível, acredito:E aqui está como você pode usá-lo:
No entanto, se, após a pausa, você desejar apenas executar ações em uma única seleção do jQuery, deverá usar o nativo do jQuery,
.delay()
que acredito também usar o deferido sob o capô:fonte
Coloque seu código dentro do
{ }
etc.
fonte
Usamos este para uma sobreposição de mensagem que pode ser fechada imediatamente com um clique ou fecha automaticamente após 10 segundos.
fonte
.delay()
e pode ser aninhadosA biblioteca Underscore também fornece uma função "delay":
fonte
Com base na resposta de Joey, criei uma solução pretendida (por jQuery, leia sobre 'fila').
Ele segue um pouco a sintaxe jQuery.animate () - permite ser encadeado com outras funções fx, suporta 'slow' e outras jQuery.fx.speed, além de ser totalmente jQuery. E será tratado da mesma maneira que as animações, se você as parar.
O campo de teste do jsFiddle com mais usos (como exibir .stop ()), pode ser encontrado aqui .
o núcleo da solução é:
o conjunto como um plug-in, suportando o uso de $ .wait () e $ (..). wait ():
Nota: como o wait é adicionado à pilha de animação, $ .css () é executado imediatamente - como se supõe: comportamento esperado do jQuery.
fonte
fonte
Perceba que essa é uma pergunta antiga, mas escrevi um plugin para resolver esse problema que alguém pode achar útil.
https://github.com/madbook/jquery.wait
permite fazer isso:
fonte