none examples div jquery timeout

examples - jquery toggle



Tiempo de espera jQuery efectos (7)

Estoy intentando que un elemento se desvanezca, luego en 5000 ms se desvanecen nuevamente. Sé que puedo hacer algo como:

setTimeout(function () { $(".notice").fadeOut(); }, 5000);

Pero eso solo controlará el fundido de salida, ¿agregaría lo anterior en la devolución de llamada?


Acabo de descubrirlo a continuación:

$(".notice") .fadeIn( function() { setTimeout( function() { $(".notice").fadeOut("fast"); }, 2000); });

¡Guardaré la publicación para otros usuarios!



Esto se puede hacer con solo unas pocas líneas de jQuery:

$(function(){ // make sure img is hidden - fade in $(''img'').hide().fadeIn(2000); // after 5 second timeout - fade out setTimeout(function(){$(''img'').fadeOut(2000);}, 5000); });​

ver el violín a continuación para un ejemplo de trabajo ...

http://jsfiddle.net/eNxuJ/78/


Gran truco por @strager. Implementarlo en jQuery de esta manera:

jQuery.fn.wait = function (MiliSeconds) { $(this).animate({ opacity: ''+=0'' }, MiliSeconds); return this; }

Y luego usarlo como:

$(''.notice'').fadeIn().wait(2000).fadeOut(''slow'');


Para poder usarlo así, necesita devolver this . Sin el retorno, fadeOut (''slow'') no obtendrá un objeto para realizar esa operación.

Es decir:

$.fn.idle = function(time) { var o = $(this); o.queue(function() { setTimeout(function() { o.dequeue(); }, time); }); return this; //**** }

Entonces haz esto:

$(''.notice'').fadeIn().idle(2000).fadeOut(''slow'');


Puedes hacer algo como esto:

$(''.notice'') .fadeIn() .animate({opacity: ''+=0''}, 2000) // Does nothing for 2000ms .fadeOut(''fast'');

Tristemente, no puedes hacer .animate ({}, 2000) - Creo que esto es un error y lo reportaré.


Actualización: a partir de jQuery 1.4, puede usar el .delay( n ) . http://api.jquery.com/delay/

$(''.notice'').fadeIn().delay(2000).fadeOut(''slow'');

Nota : $.show() y $.hide() de forma predeterminada no están en la cola, por lo que si desea usar $.delay() con ellos, debe configurarlos de esa manera:

$(''.notice'') .show({duration: 0, queue: true}) .delay(2000) .hide({duration: 0, queue: true});

Posiblemente pueda usar la sintaxis de Queue, esto podría funcionar:

jQuery(function($){ var e = $(''.notice''); e.fadeIn(); e.queue(function(){ setTimeout(function(){ e.dequeue(); }, 2000 ); }); e.fadeOut(''fast''); });

o podrías ser realmente ingenioso y hacer una función jQuery para hacerlo.

(function($){ jQuery.fn.idle = function(time) { var o = $(this); o.queue(function() { setTimeout(function() { o.dequeue(); }, time); }); }; })(jQuery);

lo cual (en teoría, trabajando en la memoria aquí) le permite hacer esto:

$(''.notice'').fadeIn().idle(2000).fadeOut(''slow'');