在点击内部时保持Bootstrap下拉菜单打开。
在点击内部时保持Bootstrap下拉菜单打开。
我有一个Bootstrap下拉菜单。我希望在我点击菜单内部时保持打开状态,但在单击下拉菜单切换按钮或菜单外部时关闭。
在我在中输入内容时,下拉菜单似乎不会关闭,但是当我在下拉菜单内部的其他地方单击时,它会关闭。
问题:如何使用jQuery避免这种情况?
以下是我的HTML代码:
在Bootply中的演示
原因:点击其他链接后,再次点击菜单,子下拉菜单不再显示。
解决方法:使用以下JavaScript代码手动打开和关闭下拉菜单。
$(function() { $('.dropdown-toggle').on('click', function(event) { $('.dropdown-menu').slideToggle(); event.stopPropagation(); }); $('.dropdown-menu').on('click', function(event) { event.stopPropagation(); }); $(window).on('click', function() { $('.dropdown-menu').slideUp(); }); });
将上述代码放入`application.js`文件中,使其在所有页面上生效。
问题:如何保持Bootstrap下拉菜单在内部点击时保持打开状态?
解决方法:可以通过在下拉菜单内部停止事件传播来解决这个问题。具体代码如下:
$(document).on('click', '.allow-focus .dropdown-menu', function (e) { e.stopPropagation(); });
在上述代码中,通过使用`stopPropagation()`方法停止事件的传播。
下面是一个使用该解决方法的示例Demo:
另外,如果需要解决相反的问题(即点击外部区域时保持下拉菜单打开状态),可以参考以下链接的解决方法:Keep Bootstrap Dropdown Open When Clicked Off。