2012-06-16 2 views
5

Ja, ich weiß, dass diese Frage schon einmal gestellt wurde, aber ich kann keine Antwort finden, die funktioniert. Dies ist eine akzeptierte Antwort von einem der anderen Fragen:Funktion ausführen, nachdem Benutzer 2 Sekunden lang über den Link schwebt

$('#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/

Wie sehen Sie es nicht tun, was es soll.

Was ich brauche, ist in der Theorie einfach, aber ich kann es nicht zum Laufen bringen - wenn ein Benutzer für 2 Sekunden über einen Link schwebt, wird eine Funktion aufgerufen. Wenn der Benutzer die Maus vor 2 Sekunden bewegt, passiert nichts.

Antwort

14

Der Code works perfectly fine. Es bricht nur aufgrund der alert() Aufrufe, die das Mouseout-Ereignis verursacht ausgelöst wird.

Was lernen wir daraus? Verwenden Sie nicht alert() in Kombination mit Fokus/Hover/Mousemove-bezogenen Ereignissen.

By the way, gibt es bereits jQuery Plugins für das, was Sie tun möchten: http://cherne.net/brian/resources/jquery.hoverIntent.html

+0

Well. Schaust du dir das an? Mir ist nie in den Sinn gekommen. Vielen Dank. – jovan

Verwandte Themen