单击时引导下拉closures

我把一个表单放在引导下拉列表中,但是当我单击表单中的任何一个字段时,下拉列表就会消失。 我有这段代码,但我不知道该把它放在哪里,以防止下拉消失。

$(function test() { // Setup drop down menu $('.dropdown-toggle').dropdown(); // Fix input element click problem $('.dropdown input, .dropdown label').click(function(e) { e.stopPropagation(); }); }); 

有人可以告诉我,我应该把这个? 我尝试在引导下拉,我尝试在HTML内,但它仍然无法正常工作。

只需使用这个例子。这个解决scheme适用于我。

 <script type="text/javascript"> window.addEvent('domready',function() { Element.prototype.hide = function() { $(function () { // replace your tab id with myTab //<ul id="myTab" class="nav nav-tabs"> $('#myTab li:eq(1) a').tab('show'); }); }; }); </script> 

希望它会有所帮助。 谢谢。

你可以一起省略掉下拉电话,引导下拉菜单没有它。 确保你正确地包装你的脚本,你可以将其包含在页面的标题或正文中,尽pipe我个人更喜欢将它放在页面的主体上。

JS

 <script type="text/javascript"> $('.dropdown-menu input, .dropdown-menu label').click(function(e) { e.stopPropagation(); }); </script> 

回答已经被接受的时间已经过去了,但是如果你想保持下拉的开放,如果它像一种对话,我认为最好的方式是:

 $('.dropdown').dropdown().on("hide.bs.dropdown", function(e) { if ($.contains(dropdown, e.target)) { e.preventDefault(); //or return false; } }); 

如果你想停止只closures一些下拉菜单,而不是所有的,那么只需添加一个额外的类到你的ul块:

 <ul class="dropdown-menu keep-open-on-click"> 

并使用此代码:

 $(document).on('click', '.dropdown-menu', function(e) { if ($(this).hasClass('keep-open-on-click')) { e.stopPropagation(); } }); 

这适用于我(侧边栏打开一个简单的链接自举切换)

 $('.dropdown').find("a").not('.dropdown-toggle').on("click",function(e){ e.stopImmediatePropagation(); }); 

您需要停止冒泡DOM树的事件:

 $('.dropdown-menu').click(function(e) { e.stopPropagation(); }); 

event.stopPropagation防止事件到达最终由Bootstrap隐藏菜单处理的节点。

谢谢你的回答,我在下拉菜单下有同样的问题。 使用上述解决scheme,我也能够解决这个问题。

 $('.dropdown-menu .dropdown-submenu a[data-toggle="dropdown-submenu"]').click(function (e) { e.stopPropagation(); }); 

 <script type="text/javascript"> $('.dropdown-menu').click(function(e) { e.stopPropagation(); }); </script> 

在原来的答案,删除所有类,只是把“。下拉菜单”类,它为我工作。 我在下拉菜单中有一个input栏。

菜单的屏幕截图

如果您查看下拉窗口小部件的底部,您将看到:

 $(document) .on('click.bs.dropdown.data-api', '.dropdown form', function(e) { e.stopPropagation() }) 

所以你有以下select:

  1. 只需用表单将您的下拉列表包装起来
  2. 或者您可以为.dropdown YOUR_SELECTOR的点击事件添加事件监听
 $(document) .on('click.my', '.dropdown some_selector', function(e) { e.stopPropagation() })