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