如何跳过一些Javascript事件?

时间:2013-08-30 14:25:39

标签: javascript performance events dom

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

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

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

2 个答案:

答案 0 :(得分:3)

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

您可以通过在事件处理程序中使用超时来实现此目的,例如,如果事件是在最后100毫秒内引发的,则不会继续执行此操作。

那里有ready-made solutions for jQueryMootools 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);
    }
}

http://jsfiddle.net/B7uRV/