我设置了相当长的超时时间,888 毫秒。而且我要小心不要让我的鼠标指针停留在多个单元格上。在我将鼠标悬停在表格中间的一个单元格上之后,鼠标确实非常短暂地触摸了其他一些单元格,然后快速将鼠标移过相邻的单元格以超出表格的范围。但是鼠标在那些相邻的单元格上只停留了片刻。
然而,对于鼠标离开桌子时触摸到的每个单元格,我都会收到警报。就好像一旦超时触发,任何触发鼠标悬停事件的单元格都被视为已经悬停了整整 888 毫秒。
以下代码位于 each() 循环中,该循环访问表中的每个单元格:
cell$.hover(
function () {
var el = $(this);
var delayedFunction = window.setTimeout(function () {
$.data(el, 'timerid', null);
alert("hovered" + el.attr('id'));
}, 888);
$.data(el, 'timerid', delayedFunction);
},
function () {
var el = $(this);
var delayedFunction = $.data(el, 'timerid');
if (delayedFunction != null) {
// Kill previously started timer
window.clearTimeout(delayedFunction);
}
}
);