2010-10-19 2 views
13

Есть ли решение JavaScript или jQuery для повторного запуска функции (после setTimeout), когда мышь находится над объектом DOM? В противном случае сказано, есть ли JavaScript «делать при наведении курсора мыши» (или «если мышь»)?«if mouseover» или «do while mouseover» в JavaScript/jQuery

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

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

    }); 

ответ

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, пытался написать объяснение для этого .. –

+0

+1 Clear and simple. – jensgram

+0

О, это круто! Отличный пример тоже! – Kyle

0

Я решил бы эту проблему, используя событие onmouseout. Запустите все, что вы намеревались сделать, когда мышь находится над указанным компонентом в событии mouseover. Когда событие onmouseout происходит, я бы остановил его.

0

я использовать новый стиль привязки JQuery.

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

Я знаю, что это своего рода старый, но я думаю, что собственно функция уже в JavaScript, onmousemove делает именно это.