Mise à jour: à partir de jQuery 1.4, vous pouvez utiliser la .delay( n )
méthode. http://api.jquery.com/delay/
$('.notice').fadeIn().delay(2000).fadeOut('slow');
Remarque : $.show()
et $.hide()
par défaut ne sont pas mis en file d'attente, donc si vous souhaitez les utiliser $.delay()
avec eux, vous devez les configurer de cette façon:
$('.notice')
.show({duration: 0, queue: true})
.delay(2000)
.hide({duration: 0, queue: true});
Vous pouvez éventuellement utiliser la syntaxe Queue, cela peut fonctionner:
jQuery(function($){
var e = $('.notice');
e.fadeIn();
e.queue(function(){
setTimeout(function(){
e.dequeue();
}, 2000 );
});
e.fadeOut('fast');
});
ou vous pourriez être vraiment ingénieux et créer une fonction jQuery pour le faire.
(function($){
jQuery.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
};
})(jQuery);
ce qui vous permettrait (en théorie, travailler ici sur la mémoire) de faire ceci:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Je viens de le comprendre ci-dessous:
Je garderai le message pour les autres utilisateurs!
la source
Super hack par @strager. Implémentez-le dans jQuery comme ceci:
Et puis utilisez-le comme:
la source
Vous pouvez faire quelque chose comme ceci:
Malheureusement, vous ne pouvez pas simplement faire .animate ({}, 2000) - Je pense que c'est un bogue et je vais le signaler.
la source
Ben Alman a écrit un plugin pour jQuery appelé doTimeout. Il a beaucoup de fonctionnalités intéressantes!
Vérifiez-le ici: jQuery doTimeout: Comme setTimeout, mais mieux .
la source
Pour pouvoir l'utiliser comme ça, vous devez revenir
this
. Sans le retour, fadeOut ('slow'), n'obtiendra pas d'objet sur lequel effectuer cette opération.C'est à dire:
Alors faites ceci:
la source
Cela peut être fait avec seulement quelques lignes de jQuery:
voir le violon ci-dessous pour un exemple de travail ...
http://jsfiddle.net/eNxuJ/78/
la source