2010-10-19 8 views
13

¿Hay una solución JavaScript o jQuery para ejecutar una función repetidamente (después de setTimeout) mientras el mouse está sobre un objeto DOM? De lo contrario, ¿hay un JavaScript "do while mouseover" (o "si mouseover")?Un "si mouseover" o un "do while mouseover" en JavaScript/jQuery

$('someObject').bind('mouseover', function() { 

     //Do the following while mouseover 
     $('someOtherObject').css('margin-left',adjustedLeft + 'px'); 
     setTimeout(/*do it again*/,25); 

    }); 

Respuesta

38
$('someObject').on('mouseenter', function() { 
    this.iid = setInterval(function() { 
     // do something   
    }, 25); 
}).on('mouseleave', function(){ 
    this.iid && clearInterval(this.iid); 
}); 

Example Look here

+0

+1, intentaba escribir una explicación para esto .. –

+0

+1 Claro y simple. – jensgram

+0

¡Oh, eso es genial! ¡Gran ejemplo también! – Kyle

0

Resolveré este problema utilizando el evento onmouseout. Comience lo que tenía previsto hacer mientras el mouse está sobre el componente especificado en el evento mouseover. Cuando ocurre el evento onmouseout lo detendría.

0

yo uso el nuevo estilo se unen de jQuery.

 
$(el).bind({ 
'mouseenter': function(){console.log('Mouse over');}, 
'mouseleave': function(){console.log('Mouse leave');} 
}); 
0

Sé que esto es un poco viejo, pero creo que la función apropiada ya está en JavaScript, onmousemove hace precisamente eso.