q提示2:在延迟显示之前触发隐藏?

时间:2012-11-30 14:46:49

标签: delay show-hide qtip2

我在qTip 2上遇到了一个恼人的小互动问题。我页面上的一个按钮附有一个提示,设置为在mouseover延迟后显示在500ms上,并立即消失在{ {1}}。

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

问题是,如果事件恰好发生,则立即mouseout事件似乎不会取消延迟的hide事件。换句话说,如果用户指向该按钮并在低于show时点击该按钮,500ms事件会触发(无效),然后 hide事件在show处触发,导致工具提示显示甚至认为按钮不再存在(并且处于错误的位置以启动,因为如果按钮不可见,它无法正确定位)。

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

2 个答案:

答案 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推荐的方法。