我在qTip 2上遇到了一个恼人的小互动问题。我页面上的一个按钮附有一个提示,设置为在mouseover
延迟后显示在500ms
上,并立即消失在{ {1}}。
单击按钮时,整个视图会发生变化,特定按钮会消失,因此我强制提示立即隐藏(否则,它会一直挂起,直到用户移动鼠标,即使触发它的按钮不再显示可见)。
问题是,如果事件恰好发生,则立即mouseout
事件似乎不会取消延迟的hide
事件。换句话说,如果用户指向该按钮并在低于show
时点击该按钮,500ms
事件会触发(无效),然后 hide
事件在show
处触发,导致工具提示显示甚至认为按钮不再存在(并且处于错误的位置以启动,因为如果按钮不可见,它无法正确定位)。
当我触发500ms
事件告诉它停在那里而不执行任何其他事件时,有没有办法?
答案 0 :(得分:1)
未经测试
您可以使用show事件来检查按钮是否可见,如果不是则不显示....
这样的事情:
events: {
show: function(event, api) {
var target = event.originalEvent.target;
if($("#idOfButton").length === 0 ) {
event.preventDefault();
//or try this (commednt the above and uncomment the code below)
//clearTimeout(api.timers.custom);
}
}
}
答案 1 :(得分:0)
我解决了这个问题(@Daniel,你的答案很接近,所以我也会投票给你):
events: {
show: function(event, api) {
if ($("#mybutton").is(':hidden')) {
try { event.preventDefault(); } catch(e) {}
}
}
};
这是qTip's documentation推荐的方法。