2010-11-22 12 views
16

J'ai ce code, qui ouvre un aperçu du panier sur un site web sur lequel je travaille. Il reste ouvert si l'utilisateur est placé dessus, mais je veux qu'il ait un délai de deux secondes avant que le rappel de mon hover soit déclenché. C'est juste au cas où l'utilisateur ne voulait pas que la souris quitte la zone du panier.Puis-je utiliser .delay() avec .animate() dans jQuery?

est Ci-dessous le code que je me sers pour animer le panier:

$('.cart_button, .cart_module').hover(function(){ 
    $(".cart_module").stop().animate({top:'39px'},{duration:500}); 
}, function(){ 
    $('.cart_module').stop().animate({top: -cartHeight},{duration:500}) 
}); 

est le code que j'essayé d'utiliser, mais n'avait une incidence sur:

$('.cart_button, .cart_module').hover(function(){ 
    $(".cart_module").delay().animate({top:'39px'},{duration:500}); 
}, function(){ 
    $('.cart_module').delay().animate({top: -cartHeight},{duration:500}) 
}); 
+0

Version 1.4.2. Rien ne s'est passé, il n'y a eu aucun retard, j'ajouterai le code que j'ai essayé d'utiliser à ma question. – Henryz

+1

Possible duplicate ... http: //stackoverflow.com/questions/1089246/jquery-how-to-tell-hover-to-wait –

Répondre

3

J'ai toujours réussi cette genre de choses à l'aide de base setTimeout et clearTimeout js fonctions.

Voici un example on jsFiddle

Jetez un oeil à jquery.hoverIntent plugin aussi, il vous donne un délai d'attente sur le vol stationnaire et les événements

0

Combien de temps voulez-vous à retarder pour ????

$('.cart_button, .cart_module').hover(function(){ 
      $(".cart_module").delay(2000).animate({top:'39px'},{duration:500}); //two seconds 
     }, function(){ 
      $('.cart_module').delay(2000).animate({top: -cartHeight},{duration:500}) //two seconds 
    }); 
+0

J'ai oublié de mettre le temps pour le retard, mais la mise à l'heure ne fait toujours pas de temps différence. – Henryz

25

Si vous ajoutez l'arrêt avant le délai, il fonctionne très bien:

$('.cart_button, .cart_module').hover(function() { 
    $('.cart_module').stop(true, true).delay(100).animate({top:'39px'}, 400); 
    }, 
    function() { 
    $('.cart_module').stop(true, true).animate({top: -cartHeight}, 250); 
}); 
2

On dirait qu'il peut y avoir été mises à jour jQuery dans cette veine depuis 2011. En Chrome je peux utiliser ce sans délai d'expiration appels:

$('.thing').hover(function(){ 
    $(".thing").delay(2000).animate({top:'39px'},{duration:500}); 
} 
+0

'$ ('. Thing'). Delay (2000) .animate ({top: '39px'}, 500);' (version légèrement plus courte) –