2012-11-30 51 views
0

我在qTip 2上遇到了一個令人討厭的小交互問題。我的頁面上的一個按鈕上有一個提示,在延遲500ms之後出現在mouseover上,並立即在mouseout上消失。qTip 2:在延遲顯示之前觸發隱藏?

點擊按鈕後,整個視圖會改變,特定按鈕消失,所以我強制提示立即隱藏(否則,它會掛起,直到用戶移動鼠標,即使觸發它的按鈕不是更長的可見度)。

問題是如果事件首先發生,立即hide事件似乎不會取消延遲show事件。換句話說,如果在按鈕,然後的show事件觸發的500ms,導致工具提示中顯示用戶點並單擊它在不到500ms,在hide事件觸發器(什麼都不做)和甚至認爲該按鈕不再在那裏(並且在錯誤的位置啓動,因爲如果沒有按鈕可見,它無法正確定位)。

當我觸發hide事件告訴它只停在那裏而不執行任何其他事件時,有什麼辦法嗎?

+0

你可以使用顯示或渲染事件來檢查按鈕是否可見,如果不是,則不顯示.... – Daniel

回答

0

我解決它像這樣(@Daniel,你的答案是接近,所以我會給予好評,你太):

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

這是qTip's documentation推薦的方法。

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); 
      } 
     } 
}