Pergunta

Eu quero desbotar um elemento e todos os seus elementos filhos após um atraso de alguns segundos. Mas não encontrei uma maneira de especificar que um efeito deve começar após um atraso de tempo especificado.

Foi útil?

Solução

setTimeout(function() { $('#foo').fadeOut(); }, 5000);

O 5000 é de cinco segundos em milissegundos.

Outras dicas

Eu uso este plugin de pausa que acabei de escrever

$.fn.pause = function(duration) {
    $(this).animate({ dummy: 1 }, duration);
    return this;
};

Chame assim:

$("#mainImage").pause(5000).fadeOut();

Nota: Você não precisa de um retorno de chamada.


Editar: agora você deve usar o jQuery 1.4. incorporado em atraso () método. Eu não verifiquei, mas presumo que seja mais 'inteligente' do que o meu plug -in.

Anteriormente você faria algo assim

$('#foo').animate({opacity: 1},1000).fadeOut('slow');

O primeiro Animate não está fazendo nada, já que você já tem opacidade 1 no elemento, mas ele pausava a quantidade de tempo.

No JQuery 1.4, eles criaram isso na estrutura para que você não precise usar o hack como acima.

$('#foo').delay(1000).fadeOut('slow');

A funcionalidade é a mesma que o original jQuery.delay() plugar http://www.evanbot.com/article/jquery-delay-plugin/4

A melhor maneira é usar o método de atraso do jQuery:

$ ('#my_id'). Atraso (2000) .Fadeout (2000);

Você pode evitar o uso do setTimeout usando o método Fadeto () e definindo um atraso de 5 segundos nisso.

$("#hideAfterFiveSeconds").click(function(){
  $(this).fadeTo(5000,1,function(){
    $(this).fadeOut("slow");
  });
});

Escrevi um plug -in para permitir que você adicione um atraso na corrente.

por exemplo $ ('#div'). Fadeout (). Atraso (5000) .Fadein (); // elemento desbotado, aguarde 5 segundos, desbote o elemento de volta.

Ele não usa nenhum hacks de animação ou encadeamento excessivo de retorno de chamada, apenas um código curto limpo simples.

http://blindsignals.com/index.php/2009/07/jquery-delay/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top