est ici une version plus concise que Cheeso's:
$(function() {
$("#Trigger").hover(
function() {
$("#Target").delay(800).fadeIn(0);
},
function() {
$("#Target").clearQueue().fadeOut(400);
}
);
});
delay
provoquera #Target
pas en fondu pour 800ms. Lorsque vous passez la souris (que ce soit pendant que #Target
est entièrement affiché ou en attente d'affichage en raison de delay
), clearQueue
est appelée. Si cela se produit pendant ces 800 ms, delay
et fadeIn
sont effacés de la file d'attente. Sinon, la file d'attente sera déjà vide. Dans les deux cas, #Target
disparaît immédiatement.
(Notez que vous devez utiliser fadeIn(0)
au lieu de show
parce show
n'est pas quelque chose qui se passe dans la file fx et delay
aura donc pas d'effet.)
Et si vous voulez aussi retarder le fadeOut
, delay
doit aller après clearQueue
, pas avant.
Mise à jour
je remarquai que si, au lieu de fadeIn(0)
, vous utilisez fadeIn(500)
, mais vous passez la souris au cours de ces 500ms, puis overs hover ultérieures, #Target
ne fera que se fanent pour l'opacité qu'il était auparavant autorisé à disparaître. Quelqu'un sait-il si c'est un comportement intentionnel?