2010-02-15 12 views
3

Y a-t-il un moyen de faire en sorte que jquery attende un certain temps avant que l'événement mouseout ne soit déclenché?Jquery - Retarder l'événement de sortie de souris

Il se déclenche trop tôt pour le moment et je préfère attendre 500 ms avant d'évaluer la sortie de la souris. Un exemple du code que j'utilise ci-dessous.

$('.under-construction',this).bind({ 
    mousemove: function(e) { 
     setToolTipPosition(this,e); 
     css({'cursor' : 'crosshair' }); 
    }, 
    mouseover: function() { 
     $c('show!'); 
     showUnderConstruction(); 
    }, 
    mouseout: function() { 
     $c('hide!'); 
     hideUnderConstruction(); 
    }, 
    click: function() { 
     return false; 
    } 
}); 

Y a-t-il une façon de faire cela ou devrais-je le faire moi-même?

+1

showUnderConstruction() retard (500). hideUnderConstruction(). Delay (500); – ant

Répondre

8

de Split la logique à l'intérieur du mouseout dans une autre fonction. dans le mouseout même appeler cette fonction avec un setTimeout("myMouseOut", 500). Et vous pouvez combiner l'événement mouseover avec un clearTimeout() pour réinitialiser la minuterie si l'utilisateur se déplace dans un nouvel élément.

5

Vous pouvez toujours intégrer votre logique dans une fonction setTimeout().

mouseout: function() { 
    setTimeout(function(){ 
    $c('hide!'); 
    hideUnderConstruction(); 
    }, 500); 
}