Mouseenter和Mouseleave可以打开/关闭计时器

我如何编写一个mouseenter事件来触发定时器关闭以及一个mouseleave事件来触发定时器

如果达到计时器间隔,则网页将刷新。

我试过这样做但是无法解决这个问题:

 $(document).ready(function() { var timer; function start() { timer = setInterval(function(){refresh()}, 5000); } start(); $('body').mouseenter(function() { clearTimeout(timer); }); }).mouseleave(function(e) { var pageX = e.pageX || e.clientX, pageY = e.pageY || e.clientY; if (pageX <= 0 || pageY <= 0) { start(); } else clearTimeout(timer); }); function refresh() { window.location.reload(true); });  

(此代码部分取自此处: https : //stackoverflow.com/a/17714300/2593839 )

这段代码应该有效:

 function refresh() { window.location.reload(true); } var timer; function start() { timer = setTimeout(function(){refresh()}, 5000); } jQuery(document).ready(function() { start(); jQuery('body').mouseenter(function() { clearTimeout(timer); }).mouseleave(function(e) { var pageX = e.pageX || e.clientX, pageY = e.pageY || e.clientY; if(pageX <= 0 || pageY <= 0) { start(); }else { clearTimeout(timer); } }); }); 

刚拿走

 clearInterval(timer); 

 clearTimeout(timer); 

你可以这样做:

 var mytimeout; $('.box').on('mouseenter', function() { if(mytimeout) { clearTimeout(mytimeout); } }).on('mouseleave', function() { mytimeout = setInterval(function() { console.log('tick'); },1000); }); 

见小提琴: http : //jsfiddle.net/uXrKG/

这应该适合你。

 var mytimeout, i; i = $('.box').text(); $('.box').on('mouseenter', function() { if(mytimeout) { clearInterval(mytimeout); } }).on('mouseleave', function() { mytimeout = setInterval(function() { $('.box').text(i++); },1000); }); 

DEMO

应该使用clearInterval而不是clearTimeout