2013-04-21 21 views
0

我有一個使用標準Twitter Bootstrap javascript組件的下拉菜單觸發的彈出窗口。點擊由下拉觸發的彈出窗口時,如何防止下拉菜單隱藏?

你能幫我防止用戶點擊popover時關閉下拉菜單嗎?

這裏有一個小提琴:http://jsfiddle.net/EAdW5/

UX:

  1. 點擊下拉菜單按鈕===>下拉菜單顯示

  2. 點擊酥料餅的下拉項===>酥料餅顯示

  3. 點擊酥料餅===>下拉菜單一個d popover消失了! O no!我怎樣才能防止這一點?

我想要酥料餅和下拉保持,直到(一)外單擊下拉列表,並酥料餅,或(b)故意隱藏(點擊酥料餅的形式提交後,例如)。

HTML:

<div class="btn-group"> 
    <button id="btnId" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown <span class="caret"></span></button> 
    <ul class="dropdown-menu"> 
     <li><a href="#">Regular Link 1</a></li> 
     <li><a href="#">Regular Link 2</a></li> 
     <li><a href="#" id="popoverId" class="popoverThis">Popover Link</a></li> 
    </ul> 
</div> 

<div class="hide" id="popover-custom-content"> 
    <div class="form-inline"> 
     <div class="control-group"> 
      <textarea name="issue"></textarea> 
     </div> 
     <div class="control-group"> 
      <button id="btnPopoverSubmitId" class="btn">Add</button> 
      <span class="close close-inline">Cancel</span> 
     </div> 
    </div> 
</div> 

JS:

$('#popoverId').popover({ 
    html:true, 
    placement: 'right', 
    title: "Popover Title", 
    template: '<div id="popover-custom-content" class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>', 
    content: function() { return $('#popover-custom-content').html(); } 
}); 

回答

1

根據所述引導DROPDOWN類的定義,下拉使用$ parent.toggleClass( '公開')註冊爲主動。在這種情況下,它會將'open'類添加到btn-group div,它是您的'btnId'元素的父級。您可以防止默認DROPDOWN顯示/隱藏切換,並使用$('。btn-group')。show();覆蓋它。保持顯示,而不管Bootstrap的默認行爲。

然後在您的自定義'mousedown'事件以及btn-group節點的'mouseout'上使用$('.btn-group')。hide()來恢復默認的Bootstrap行爲。或者,您也可以檢查jQuery event.stopPropagation()或event.stopImmediatePropagation()以防止點擊事件冒泡DOM樹,從而阻止任何父處理程序被通知事件。 http://api.jquery.com/event.stopPropagation/