2009-12-13 5 views
3

Je cherche un moyen de répéter une action mouseover jusqu'à ce que l'utilisateur s'éloigne de la cible. Un mouseover invoque une fonction une fois, je cherche un moyen de continuer à faire la fonction.Continu mouseover

Cheers, Gazler.

Répondre

6

Vous aurez besoin d'utiliser setInterval():

var to; 
var doStuff = function() { 
    console.log('doing stuff...'); 
}; 

$('a').hover(function(e) { 
    to = window.setInterval(doStuff, 1); 
},function(e) { 
    window.clearInterval(to); 
}) 
+0

parfait, applaudissements. – Gazler

+0

Vous utilisez une seule variable de temporisation pour toutes les balises d'ancrage - cela fonctionne la plupart du temps, mais cela peut ne pas fonctionner comme prévu lorsque vous avez des balises d'ancrage imbriquées - en raison de la création d'un intervalle de deux (ou plus) pour chaque élément imbriqué. vous ne pourrez cependant effacer que l'un d'entre eux. –

+1

@dionadar: Les ancres imbriquées sont illégales: http://www.w3.org/TR/html401/struct/links.html#h-12.2.2 – David

0
//continuous 


var timer; 

var doStuff=function(quit){ 

    console.log('doing stuff'); 

    if (quit!==true){ 

    timer=setTimeout(doStuff, 100); 

    } 

    else{ 

    clearTimeout(timer); 

    } 

}; 

$('div#continuous').bind('mouseenter', doStuff).bind('mouseleave', function(){doStuff(true);});