【问题标题】:Keep Bootstrap Dropdown open in Navbar no matter what无论如何,在导航栏中保持 Bootstrap 下拉菜单打开
【发布时间】:2015-06-29 12:12:14
【问题描述】:

我有一个嵌套在导航栏中的下拉菜单,我在页面加载期间通过将open 类添加到包含下拉菜单的li 元素来打开它。

无论点击什么或用户点击页面的哪个位置,我都希望此菜单保持打开状态。我已经尝试过在 Stackoverflow.com 上找到的不同解决方案来解决类似问题,但它们都不起作用。它们似乎都涉及阻止单击事件的传播以关闭菜单。我正在使用引导程序 v3.3.4。

编辑 这是菜单布局:

<div id="navbar" class="navbar-collapse collapse">
    <ul class="nav navbar-nav">

        <li><a href="#" style="color:white;">menu1</a></li>

        <li class="dropdown open">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" id="catalogmenu" aria-expanded="false" style="color:white;">menu 2 <span class="caret"></span></a>
            <ul class="dropdown-menu" role="menu">
                <li><a href="#">Action</a></li>
                <li><a href="#">Another action</a></li>
                <li><a href="#">Something else here</a></li>
                <li class="divider"></li>
                <li class="dropdown-header">Nav header</li>
                <li><a href="#">Separated link</a></li>
                <li><a href="#">One more separated link</a></li>
            </ul>
        </li>

        <li><a href="#" style="color:white;">menu3</a></li>

        <li><a href="#" style="color:white;">menu4</a></li>

        <li><a href="#" style="color:white;">menu5</a></li>
    </ul>
    <div class="navbar-form navbar-right">
        <div class="input-group">
            <input type="text" class="form-control" style="width:310px" placeholder="Search" aria-describedby="basic-addon2">
            <span class="input-group-addon" id="basic-addon2">go</span>
        </div>
    </div>
</div>

谢谢。

编辑 2 根据我的测试,cmets 中的 DanDavis 建议是要走的路。在这种情况下,自己处理事件和格式化比依赖引导程序原生格式化和功能更容易。

【问题讨论】:

  • 复制打开的CSS规则,命名为“.open2”,并在下拉列表的类中添加“open2”;无需脚本即可工作。

标签: javascript jquery css twitter-bootstrap twitter-bootstrap-3


【解决方案1】:

这仅使用 css。 working demo

在下拉列表中添加一个类 ul (.stay-open)

<ul class="dropdown-menu stay-open">

然后使用 !important 应用样式显示块

.stay-open {display:block !important;}

【讨论】:

  • 与 css 一起使用!
【解决方案2】:

我假设您正在使用引导下拉菜单,试一试:

$('li.dropdown').on({
    "shown.bs.dropdown": function() { this.close = false; },
    "click":             function() { this.close = true; },
    "hide.bs.dropdown":  function() { return this.close; }
});

上面的实现会在再次点击下拉菜单时隐藏它。如果您不喜欢这种行为,您可以简单地删除前两行(shown.bs.dropdown 和 click 事件)并简单地为 hide.bs.dropdown 事件返回 false。

这是工作证明bootply

这是一个工作证明bootply,它将始终保持打开状态

【讨论】:

  • 刚刚试过这个。我不知道事件是否正在触发。
  • @NinjaBomb 刚刚更新并通过 bootply 添加了工作证明
  • 仅供参考 - 我刚刚在演示中对其进行了测试,当我单击菜单关闭时。
  • @NinjaBomb 如果您阅读了描述,那正是它所说的。它说如果你不想要这种行为,总是返回 false。
猜你喜欢
  • 2014-07-24
  • 2012-09-17
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 2020-03-15
  • 2019-11-15
  • 2014-07-04
  • 1970-01-01
相关资源
最近更新 更多