Respuestas:
Actualización: a partir de jQuery 1.4 puedes usar el .delay( n )
método. http://api.jquery.com/delay/
$('.notice').fadeIn().delay(2000).fadeOut('slow');
Nota : $.show()
y $.hide()
de forma predeterminada no están en cola, por lo que si desea usarlos $.delay()
con ellos, debe configurarlos de esa manera:
$('.notice')
.show({duration: 0, queue: true})
.delay(2000)
.hide({duration: 0, queue: true});
Posiblemente podría usar la sintaxis de la cola, 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 crear una función jQuery para hacerlo.
(function($){
jQuery.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
};
})(jQuery);
que (en teoría, trabajando en la memoria aquí) le permitiría hacer esto:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Gran truco de @strager. Impleméntelo en jQuery así:
jQuery.fn.wait = function (MiliSeconds) {
$(this).animate({ opacity: '+=0' }, MiliSeconds);
return this;
}
Y luego úsalo como:
$('.notice').fadeIn().wait(2000).fadeOut('slow');
Ben Alman escribió un dulce complemento para jQuery llamado doTimeout. ¡Tiene muchas características interesantes!
Compruébelo aquí: jQuery doTimeout: como setTimeout, pero mejor .
Para poder usarlo así, debes regresar this
. Sin el retorno, fadeOut ('lento'), 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');
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);
});
vea el violín a continuación para ver un ejemplo de trabajo ...