当弹出窗口明显打开但是只要鼠标进入元素,jQuery UI工具提示的打开事件就不会触发。它不遵守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);
}
答案 0 :(得分:1)
如果我明白你的目标,我认为这可能会成功:
<强> Working Example 强>
var timer;
$('td').tooltip({
show: {
delay: 2000 //number of milliseconds to wait
},
open: function (event, ui) {
var xthis = this;
timer = setTimeout(function () {
$(xthis).siblings().switchClass("bar", "foo");
}, 2000); // number of milliseconds to wait
},
close: function (event, ui, dupids) {
clearTimeout(timer);
$(this).siblings().switchClass("foo", "bar");
}
});