如果为每个表格单元格绑定“mouseover”事件并将鼠标从一个角落移动到另一个角落 - 每个事件都会被处理。
通常事件执行一些可视化。如果你快速移动鼠标,我认为没有理由在每个元素的事件处理程序中淹死。只在最后鼠标停止的地方。
但我不明白这是如何实现的......
答案 0 :(得分:3)
你需要一些东西来去除你的事件(也就是说,忽略除了最后一个之外发生在彼此附近的所有事件),或者某些东西来限制你的事件。
您可以通过在事件处理程序中使用超时来实现此目的,例如,如果事件是在最后100毫秒内引发的,则不会继续执行此操作。
那里有ready-made solutions for jQuery,Mootools More has a whole chunk of psuedo-events可以帮助您实现同样的目标。
答案 1 :(得分:3)
使用计时器延迟操作,并在适当时取消计时器:
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);
}
}