2016-04-26 68 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; 
     }); 

希望工程给大家。