2013-10-16 40 views
3

從下面的問題/答案中,我明白當您在JavaScript中調用.popover(「show」)時hide選項不起作用。即使點擊觸發,Twitter Bootstrap彈出忽略延遲

Twitter Bootstrap Popup ignores delay

不過,是不是應該當酥料餅通過鼠標點擊觸發的工作?

在下面的jsFiddle中,您可以單擊文本並顯示彈出窗口。但延遲後並沒有隱藏起來。

$("#clickMe").popover({ 
    content: "Hello world", 
    delay: { show : 100 , hide : 1000 } 
}); 

<span id="clickMe">Click me</span> 

http://jsfiddle.net/ahmed002/cwpB9/

難道預計延遲不會在這種情況下(如果是,在這種情況下做這個選項的工作)工作?

回答

0

請耐心等待:)延遲時間以毫秒爲單位,也適用於您的小提琴。 使用更長的時間,點擊一次,等待(10秒),然後再次單擊,再等待10秒:

$("#clickMe").popover({ 
      content: "Hello world", 
      delay: { show : 10000 , hide : 10000} 
     }); 
如果你設置了觸發

延遲設置將無法正常工作手冊(見:How can I use 'manual' as a trigger option for popovers in the Twitter Bootstrap framework?

+0

OMG!您剛剛幫助我意識到用戶必須再次單擊來隱藏彈出窗口。從Bootstrap到我的意見都很蹩腳。謝謝貝斯。 – user2885735

0

Bootstrap的隱藏選項不是自動隱藏延遲 - >不幸的是,用戶必須點擊才能隱藏彈出窗口。之後,單擊引導程序的隱藏選項將延遲隱藏。

如果您希望彈出窗口自動隱藏,請使用以下代碼。它定義了一個新的jQuery函數,它將引導彈出窗口與自動隱藏相關聯。

/****** Defines new jQuery functions */ 
jQuery.fn.extend({ 
    popoverWithAutoHide: function (popoverText) { 
     $(this).popover({ 
      content : popoverText 
     }).on('shown.bs.popover', function() { 
      var $this = $(this); // CLosure 
      setTimeout(function() { 
       $this.popover("hide"); 
      }, 3000); 
     }); 
    } 
}); 

基本上,只要彈出顯示,它就會激活一個額外的函數。該函數調用jQuery setTimeout在3000ms後調用第三個函數。第三個函數關閉popover。

的用法很簡單:

$("#editButton").popoverWithAutoHide("To edit items, you need to be logged in and have a rank 5 or higher.");