如果您为每个表格单元格绑定“鼠标悬停”事件并将鼠标从一个角落移动到另一个角落 - 每个事件都已处理。
通常事件执行一些可视化。如果您快速移动鼠标,我认为没有理由淹没在每个元素的事件处理程序中。仅在鼠标停止的最后一个位置。
但我不明白这是如何实现的......
如果您为每个表格单元格绑定“鼠标悬停”事件并将鼠标从一个角落移动到另一个角落 - 每个事件都已处理。
通常事件执行一些可视化。如果您快速移动鼠标,我认为没有理由淹没在每个元素的事件处理程序中。仅在鼠标停止的最后一个位置。
但我不明白这是如何实现的......
使用定时器来延迟动作,并在适当的时候取消定时器:
var timer;
var divs = document.querySelectorAll('div');
for(var i=0; i<divs.length; i++) {
divs[i].onmouseover = function() {
var div = this;
clearTimeout(timer);
timer = setTimeout(function() {
div.style.backgroundColor = 'green';
}, 200);
}
}
你需要一些东西来消除你的事件(也就是说,忽略所有发生在彼此附近的事件,除了最后一个事件),或者一些东西来限制你的事件。
您可以通过在事件处理程序中使用超时来实现这一点,例如,如果事件在最后 100 毫秒内引发,它们不会继续执行。
有现成的 jQuery 解决方案,Mootools More 有一大堆伪事件可以帮助你实现同样的目标。