每次用户点击,滚动或移动鼠标时,我都会运行一个函数。一直清除和设置间隔似乎要做很多事情,因为我想mousemove和scroll会一直生成数百个动作,这意味着它会清除并设置数百次?有没有更好的方法来实现这一点,或者它实际上是浏览器执行的一块蛋糕?这里没有显示timerFunction(),但如果这很重要,我可以提供更多的代码。
$(document).ready(function () {
idleInterval = setInterval(timerFunction, 5000);
$(this).on('click dblclick mousemove keypress scroll', function (e) {
clearInterval(idleInterval);
idleInterval = setInterval(timerFunction, 5000);
});
});
答案 0 :(得分:0)
如果您只想创建一次该功能,可以使用:
$(document).on('click dblclick mousemove keypress scroll', '.myClass', function (e) {
clearInterval(idleInterval);
idleInterval = setInterval(timerFunction, 5000);
});
每次在元素中使用此函数时,只需将myClass
类添加到$(this)即可。
如果您的timerFunction每次都不同,您可以将它们存储到数组中并映射它们。
答案 1 :(得分:0)
首先我想到的是:你在全局范围内声明一个布尔值,并在需要的事件发生时将其设置为using Array<T,3>::operator...
。然后在特定的时间间隔(例如100毫秒)检查该布尔值的更改。我认为这是一种优化方式。
true
var thatHappend = false;
$('#sample').on('click dblclick mousemove keypress scroll', function (e) {
thatHappend = true;
});
setInterval(function () {
if (thatHappend) {
console.log('Hey!');
thatHappend = false;
}
}, 100);