2010-12-23 3 views
4

J'essaie de retarder une alerte mais ne peut pas le faire fonctionner, il apparaît toujours quand #foo est plané au-dessus et augmente en taille:Comment retarder une alerte?

$('#foo').hover(function() { 
$(this).animate({width :'400px'}, 'slow'); 
}, 
function() { 
$(this).delay(2000).animate({width :'40px'}, 'slow'); 
alert('Im an alert message'); 
}); 

mais je le veux montrer seulement après #foo a diminué de retour à l'état initial ...

Répondre

-1

Utilisez la fonction setTimeout: http://www.w3schools.com/js/js_timing.asp

$('#foo').hover(function() { 
setTimeout(function(){$(this).animate({width :'400px'}, 'slow');}, 3000); 
} 

le code ci-dessus devrait retarder pendant 3 secondes.

+0

Cela n'a rien à voir avec retarder le – Ljubisa

6

Que faire à propos de l'utilisation d'un rappel ??

$('#foo').hover(function() { 
    $(this).animate({ 
     width: '400px' 
    }, 'slow'); 
}, function() { 
    $(this).delay(2000).animate({ 
     width: '40px' 
    }, 'slow', function() { //callback function, which runs very next to .animate() 
     alert('Im an alert message'); 
    }); 
}); 
+0

Thx alerte pour tous les replys, le code ci-dessus fonctionne :) – Gemma

+0

vous êtes partenaire de bienvenue. Bonne journée ! –

2

Vous devez le faire dans un rappel. Ceci est une fonction qui sera appelée lorsque l'animation est terminée:

$(this).delay(2000).animate({width :'40px'}, 'slow', function(){ 
    alert("I'm an alert message"); 
}); 

Voir la animate API.

1

Il semble que vous souhaitez utiliser un rappel sur la fonction d'animation?

$(this).delay(2000).animate({width :'40px'}, 
    'slow', 
    function() { 
     alert('Im an alert message'); 
    } 
);