【问题标题】:Prevent Sub-menu from collapsing after clicking on link (Bootstrap 3.1.1)单击链接后防止子菜单折叠(Bootstrap 3.1.1)
【发布时间】:2014-10-29 09:50:42
【问题描述】:

我的引导菜单如下(这是许多菜单项中的一个的代码 sn-p):

<!-- Code for Navigable menu (mobile) -->
<nav class="navbar navbar-default" role="navigation">
    <div class="container commonWidth">

    <button type="button" style="width: 100%" class="navbar-toggle" data-toggle="collapse" data-target="#led-collapse">
        LED & Lighting <b class="caret"></b>
    </button>

    <!-- Collect the nav links for toggling -->                        
    <div class="collapse navbar-collapse hidden-sm" id="led-collapse">
        <ul class="nav navbar-nav">

            <li class="dropdown visible-xs">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">LED Lights<b class="caret visible-xs"></b></a>
                <ul class="dropdown-menu">
                    <li><a href="#">LED Lamps & Tubes</a></li>
                    <li><a href="#">Downlights, Spotlights & COB</a></li>
                    <li><a href="#">LED Panels</a></li>
                    <li><a href="#">LED Surface</a></li>
                    <li><a href="#">Commercial & Industrial</a></li>
                    <li><a href="#">LED GU10 Fittings</a></li>
                    <li><a href="#">LED Strips</a></li>
                </ul>
            </li>

            <li class="dropdown visible-xs">
                <a href="#" class="dropdown-toggle" data-toggle="dropdown">Luminaires (Fittings)<b class="caret visible-xs"></b></a>
                <ul class="dropdown-menu">
                    <li><a href="#">Domestic Tube Fittings</a></li>
                    <li><a href="#">Floodlights</a></li>
                </ul>
            </li>

        </div>   <!-- End LED Menu -->
    </div> <!-- End commonWidth -->        
</nav>

问题是,在单击 3 级链接 (.dropdown-menu > li > a) 后,整个 2 级菜单 (li class="dropdown visible-xs") 立即折叠。但是,我希望在单击第三级链接后保持打开状态。 这是小提琴:http://jsfiddle.net/dk49/ugzwmhm6/ 有什么建议吗?

谢谢。

【问题讨论】:

  • 你能在小提琴中重现同样的内容吗?
  • 这里是小提琴(玩灰色菜单 - 风扇、LED 等。例如,点击风扇 -> 吊扇 -> 经济。点击经济链接后,吊扇块崩溃,但我希望它保持开放):jsfiddle.net/dk49/ugzwmhm6

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


【解决方案1】:

单击economy 链接后,click event 将传播到其父级,然后从那里传播到下一个父级,依此类推。当它到达第三个父元素时,第三个父元素通过切换开放类对其做出反应。因此,如果您停止传播,它将保持原样。 试试下面的代码。

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

此代码将停止将anchor 标记传播到其父级

如果您想阻止默认点击操作,请使用

$('.dropdown-menu a').click(function(e){
    if($(this).attr('href') == "#" || $(this).attr('href') == "") // New code
        e.preventDefault();
    e.stopPropagation();
})

更新

我已更新代码以防止在 URL 为 # 或没有 URL 时滚动。这应该可以达到目的

【讨论】:

  • 嘿,谢谢你的回答..它有效!然而,我现在又面临一个问题。在使用 stopPropagation() 方法时,视图会在单击经济(或任何其他第三级链接)后跳转到页面顶部。有没有办法停止这种滚动?使用 preventDefault() 解决了它,但我无法使用它,因为我无法禁用 URL。
  • 嘿,我试图做同样的事情,但它不起作用我看到的是当我点击子菜单时,一个类“collapse”被添加到导航中并且它再次关闭。这是按钮 jsfiddle.net/uohgds1f 的代码
猜你喜欢
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 2018-05-27
  • 1970-01-01
相关资源
最近更新 更多