jQuery UI 工具提示的 open 事件不是在弹出窗口明显打开时触发,而是在鼠标进入元素时触发。它不服从 show.delay 属性设置。这是记录在案的行为,所以我认为这不是错误。
因此,如果我在表格的相邻单元格上有工具提示,并且用户将鼠标拖过这些单元格,则我的打开和关闭处理程序中的操作会执行多次——三、四、五次——与数字一样多老鼠进入的细胞。
如果 show.delay 尚未发生,有什么好方法可以退出 open 事件?
编辑:不知道 delay.show 已经过去了多少时间,我不得不为 setTimeout 选择任意持续时间,并使用标志跟踪类切换是否正在进行:
<snip> ...
show: {
delay: 666
},
open: function (event, ui) {
if (me.changingClass) return;
me.changingClass = true;
$("td.baz").switchClass("foo", "bar");
},
close: function (event, ui, dupids) {
$("td.baz").switchClass("bar", "foo");
setTimeout(function () { me.changingClass = false; }, 200);
}