Como esperar 5 segundos com jQuery?

I'estou tentando criar um efeito onde a página carrega, e após 5 segundos, a mensagem de sucesso na tela se desvanece, ou desliza para cima.

Como posso conseguir isto?

Solução

Construído em javascript setTimeout.

setTimeout(
  function() 
  {
    //do something special
  }, 5000);

UPDATE: você quer esperar desde quando a página terminou de carregar, então coloque esse código dentro do seu $(document).ready(...); script.

UPDATE 2: jquery 1.4.0 introduziu o método `.delay'. Check it out. Note que .delay só funciona com as filas de efeitos jQuery.

Comentários (10)

Use um temporizador javascript normal:

$(function(){
   function show_popup(){
      $("#message").slideUp();
   };
   window.setTimeout( show_popup, 5000 ); // 5 seconds
});

Isto vai esperar 5 segundos após o DOM estar pronto. Se você quiser esperar até que a página esteja realmente "carregada", você precisa utilizar isto:

$(window).load(function(){
   function show_popup(){
      $("#message").slideUp();
   };
   window.setTimeout( show_popup, 5000 ); // 5 seconds
})

EDIT: Em resposta ao comentário do OP's perguntando se existe uma maneira de fazer isso em jQuery e não utilizar setTimeout a resposta é não. Mas se você quisesse fazer mais "jQueryish" você poderia embrulhá-lo assim:

$.wait = function( callback, seconds){
   return window.setTimeout( callback, seconds * 1000 );
}

Podias então chamar-lhe assim:

$.wait( function(){ $("#message").slideUp() }, 5);
Comentários (0)

A Biblioteca de sublinhados também fornece um " delay" função:

_.delay(function(msg) { console.log(msg); }, 5000, 'Hello');
Comentários (0)