0

我在使用 qTip 2 时遇到了一个烦人的小交互问题。我页面上的一个按钮附有一个提示,设置为延迟mouseover后出现500ms并立即消失mouseout

单击按钮时,整个视图会发生变化,并且该特定按钮会消失,因此我强制提示立即隐藏(否则,它会一直徘徊,直到用户移动鼠标,即使触发它的按钮不再可见)。

问题是如果它恰好首先发生,立即hide事件似乎不会取消延迟事件。show换句话说,如果用户指向按钮并在 小于 时单击它500ms,则hide事件触发(什么都不做),然后事件在show触发500ms,即使按钮不再存在(并且错误)也会导致工具提示显示位置启动,因为它无法在按钮不可见的情况下正确定位自身)。

当我触发hide事件时,有没有办法告诉它停在那里而不执行任何其他事件?

4

2 回答 2

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);  
           }
       }
}
于 2012-11-30T17:27:48.903 回答
0

我这样解决了(@Daniel,你的答案很接近,所以我也会支持你):

events: {
    show: function(event, api) {
        if ($("#mybutton").is(':hidden')) {
            try { event.preventDefault(); } catch(e) {}
        }
    }
};

这是qTip 文档推荐的方法。

于 2012-12-03T21:57:44.913 回答