1

如果您为每个表格单元格绑定“鼠标悬停”事件并将鼠标从一个角落移动到另一个角落 - 每个事件都已处理。

通常事件执行一些可视化。如果您快速移动鼠标,我认为没有理由淹没在每个元素的事件处理程序中。仅在鼠标停止的最后一个位置。

但我不明白这是如何实现的......

4

2 回答 2

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);
    }
}

http://jsfiddle.net/B7uRV/

于 2013-08-30T14:31:49.763 回答
3

你需要一些东西来消除你的事件(也就是说,忽略所有发生在彼此附近的事件,除了最后一个事件),或者一些东西来限制你的事件。

您可以通过在事件处理程序中使用超时来实现这一点,例如,如果事件在最后 100 毫秒内引发,它们不会继续执行。

现成的 jQuery 解决方案Mootools More 有一大堆伪事件可以帮助你实现同样的目标。

于 2013-08-30T14:28:13.873 回答