2016-04-26 71 views
1

我得到了一個下拉菜單,其中包含​​。花式卷軸是一個非常簡單的庫,它取代了默認的卷軸。只需添加一些HTML標記,滾動工作,甚至無需使用JavaScript進行初始化。阻止點擊拖動時關閉引導程序下拉菜單

經過調試,看看發生了什麼,我發現引導正在使我的下拉列表時點擊拖動隱藏。

事件是'hide.bs.dropdown'。現在,我嘗試了很多東西,設法使它工作,但唯一的問題是,無論何時我開始拖動,由於stopPropagation()函數,即使我釋放,它仍將保持滾動nan-stap鼠標點擊。

這些有幾件事情,而谷歌搜索我嘗試的事情是,沒有一個涉及這種情況的解決答案,其中具有滾動條:

 $('.dropdown-menu input, .dropdown-menu label, .thumb', element).click(function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
     }); 

     $('.thumb', element).on('mouseup', function(e) { 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 
     return false; 
     }); 

     $('.dropdown-menu .scrollbarY', element).click(function(e) { 
     e.stopImmediatePropagation(); 
     }); 

     $(element).on("hide.bs.dropdown",function(e) { 
     e.preventDefault(); 
     return false; 
     }); 

我在尋找的行爲,點擊滾動拖拽(.thumb)不會關閉下拉菜單,但如果點擊其中一個項目或離開下拉菜單,它應該關閉它。

+1

當焦點位於另一個控件上時,關閉下拉菜單是標準瀏覽器行爲。改變這可能會讓用戶感到驚訝。 –

+1

但點擊拖動上下滾動對於任何用戶來說都是非常正常的,您不會期望完成拖動後關閉下拉菜單。 – msqar

回答

0

好的,經過幾個小時的掙扎後,我做了一系列測試,解決了這個問題。 如果有人遇到同樣的問題,這是我做的:

(scrollbarY是拖拉父)

 $('.scrollbarY', element).click(function(e) { 
     e.preventDefault(); 
     e.stopImmediatePropagation(); 
     return false; 
     }); 

希望工程給大家。