Oui, je sais que cette question a déjà été posée, mais je ne trouve pas de réponse satisfaisante. C’est une réponse acceptée de l’une des autres questions:
$('#element').hover(function() { $(this).data('timeout', window.setTimeout(function() { alert('hovered for 2 seconds'); }, 2000)); }, function() { clearTimeout($(this).data('timeout')); alert('mouse left'); });
http://jsfiddle.net/nCcxt/
Comme vous le voyez, il ne fait pas ce qu’il est censé faire.
Ce dont j’ai besoin est simple en théorie mais je n’arrive pas à le faire fonctionner – lorsqu’un utilisateur survole un lien pendant 2 secondes, une fonction est appelée. Si l’utilisateur éloigne la souris avant 2 secondes, rien ne se passe.
Le code fonctionne parfaitement bien . Il ne casse que du fait des appels alert()
qui déclenchent l’événement mouseout.
Qu’apprenons-nous de cela? N’utilisez pas alert()
en combinaison avec des événements liés à focus / survol / déplacement de souris.
En passant, il existe déjà des plugins jQuery disponibles pour ce que vous voulez faire: http://cherne.net/brian/resources/jquery.hoverIntent.html