Ответ 1
$('someObject').on('mouseenter', function() {
this.iid = setInterval(function() {
// do something
}, 25);
}).on('mouseleave', function(){
this.iid && clearInterval(this.iid);
});
Есть ли решение JavaScript или jQuery для повторного запуска функции (после setTimeout
), когда мышь находится над объектом DOM? В противном случае сказано, есть ли JavaScript "делать при наведении курсора мыши" (или "if mouseover" )?
$('someObject').bind('mouseover', function() {
//Do the following while mouseover
$('someOtherObject').css('margin-left',adjustedLeft + 'px');
setTimeout(/*do it again*/,25);
});
$('someObject').on('mouseenter', function() {
this.iid = setInterval(function() {
// do something
}, 25);
}).on('mouseleave', function(){
this.iid && clearInterval(this.iid);
});
Я бы решил эту проблему, используя событие onmouseout. Запустите все, что вы намеревались сделать, пока мышь находится над указанным компонентом события mouseover. Когда событие onmouseout происходит, я бы остановил его.
Я использую новый стиль связывания jQuery.
$(el).bind({ 'mouseenter': function(){console.log('Mouse over');}, 'mouseleave': function(){console.log('Mouse leave');} });
Я знаю, что это уже давно, но я думаю, что правильная функция уже есть в JavaScript, onmousemove делает именно это.