如何编写 mouseenter事件以触发计时器关闭以及使用mouseleave事件触发计时器?
如果达到计时器间隔,则网页将刷新。
我试过这样做,但无法解决这个问题:
<script>
$(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);
});
</script>
(此代码部分取自此处:https://stackoverflow.com/a/17714300/2593839)
答案 0 :(得分:2)
此代码应该有效:
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);
}
});
});
答案 1 :(得分:0)
只需
clearInterval(timer);
不
clearTimeout(timer);
答案 2 :(得分:0)
你可以这样做:
var mytimeout;
$('.box').on('mouseenter', function() {
if(mytimeout) {
clearTimeout(mytimeout);
}
}).on('mouseleave', function() {
mytimeout = setInterval(function() {
console.log('tick');
},1000);
});
请参阅小提琴:http://jsfiddle.net/uXrKG/
答案 3 :(得分:0)
这对你有用。
var mytimeout, i;
i = $('.box').text();
$('.box').on('mouseenter', function() {
if(mytimeout) {
clearInterval(mytimeout);
}
}).on('mouseleave', function() {
mytimeout = setInterval(function() {
$('.box').text(i++);
},1000);
});
应该使用clearInterval not clearTimeout