【问题标题】:jQuery Menu is collapsing on submenu clickjQuery 菜单在子菜单点击时折叠
【发布时间】:2013-06-07 16:29:46
【问题描述】:

我正在尝试使 jquery 幻灯片菜单正常工作,但我现在没有想法。在子菜单条目上单击时如何停止菜单折叠?

这是我到目前为止所得到的 - js 部分、导航代码,最后是相关的 css 部分:

    <script type="text/javascript">
        $(document).ready(function() {
         $('ul .sub').hide();
         $("li:has(.sub)").click(function() {
            $("ul", this).toggle('slow');
        });
    </script>

    <nav id="nav" class="nav">
        <ul>
            <li class="current"><a href="#a">menu1</a></li>
            <li><a href="#b">menu2</a>
                <ul class="sub">
                    <li><a href="#ba">sub2a</a></li>
                    <li><a href="#bb">sub2b</a></li>
                    <li><a href="#bc">sub2c</a></li>
                </ul>
            </li>
            <li><a href="#c">menu3</a></li>
            <li><a href="#d">menu4</a>
                <ul class="sub">
                    <li><a href="#da">sub4a/a></li>
                        <li><a href="#db">sub4b</a></li>
                </ul>
            </li>
        </ul>
    </nav>

这是css:

 .nav li {
    list-style:none;
    line-height: 30px;  
 }

 .nav a:link, .nav a:visited{
    color:#333 !important;
    text-decoration:none;
 }

 .nav a:hover {
    color:#9bb710;
    text-decoration:none;
 }

 .current a:link, .current a:hover, .current a:visited {
    color:#9bb710 !important;
 }

 .sub {
    color:#333 !important;
    text-decoration:none;
    font-size: 14px;
    margin-left: 15px;
    line-height: 22px;
 }

【问题讨论】:

  • 您也可以发布您的 CSS 代码吗?
  • 嗨 Kishor,我已经编辑了第一篇文章并添加了 css。

标签: jquery slide collapse submenu


【解决方案1】:

这是由于事件传播而发生的:当您单击子项时,“单击”事件会向上传播到容器“li”。

您可以通过添加以下内容来防止这种情况:

$("li").click(function(event) {
    event.stopPropagation();
});

这是一个 jsfiddle 示例:http://jsfiddle.net/EWXPy/

【讨论】:

  • 谢谢 mishik - 这就是我要找的东西!
  • 点击另一个主菜单时是否可以折叠子菜单? Acutally 它保持扩展。
  • 太棒了 - 非常感谢!只有一件事。我可以在活动子菜单中添加一个类“subcurrent”吗?
  • 你的意思是这样? $("ul", this).addClass("subcurrent").toggle('slow');
  • 嗨 - 关闭:我需要它到子
  • -元素,比如 sub2a。
【解决方案2】:

您忘记了脚本中的右括号:

必须是这样的:

<script type="text/javascript">
        $(document).ready(function() {
         $('ul .sub').hide();
         $("li:has(.sub)").click(function() {
            $("ul", this).toggle('slow');
        });
});
</script>

【讨论】:

    【解决方案3】:
    $("li:has(.sub)").click(function(e) {
        if ($(e.target).parents('.sub').length) return false;
    
        $("ul", this).toggle('slow');
    });
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签