【问题标题】:jQuery dropdown menu should expand if parent is active如果父级处于活动状态,则 jQuery 下拉菜单应展开
【发布时间】:2011-03-03 13:21:51
【问题描述】:

我正在 jQuery 中制作一个简单的下拉菜单。它工作正常。不过我遇到了问题。

问题是,我需要保持活动页面下拉菜单处于展开状态 在下面的示例中,具有 .inpath 父级的子菜单需要始终保持展开状态。如果您将鼠标悬停在另一个菜单项上,它应该显示相关的子页面,当您将鼠标悬停时返回以显示活动的子页面。非常感谢任何帮助:-)!

我的html:

<div id="menu">

            <ul>

                <li><a href="">Hvem</a></li>
                <li><a href="">Hvad</a>
                    <ul>
                    <li><a href="">Produkter</a></li>
                    <li><a href="">Leveringer</a></li>
                    </ul>
                </li>

                <li class="inpath"><a href="">Hvordan</a>

                    <ul>

                        <li><a href="">Reklame</a></li>
                        <li><a href="">PR</a></li>
                        <li><a href="">Websites</a></li>
                        <li><a href="">Illustrationer</a></li>

                    </ul>

                </li>
                <li class="last-item"><a href="">Sådan!</a></li>

            </ul>

            <div class="clear"><!--clearfix--></div>

        </div>

我的 jQuery:

 <script type="text/javascript">
        //mouseenter, mouseover, hover
        // mouseleave, mouseout,
    $(document).ready(function () { 
        $('#menu ul li ul').hide();
        $('#menu li').hover(
            function () {
                //show its submenu
                $('ul', this).slideDown(100);

            }, 
            function () {
                //hide its submenu
                $('ul', this).slideUp(100);         
            }
        );

    });

        </script>

【问题讨论】:

  • 可能有点跑题了,但你知道你可以在菜单 DIV 的样式中使用 "overflow:auto" 并摆脱清除 DIV,对吧?
  • @hunter 我已经做过很多次了,它对我有用吗?阅读这篇文章:joelpittet.com/log/2009/03/…
  • @Farlig 非常有趣。每天学些新东西。我肯定会尝试这种方法,因为像旧方法一样清除浮动一直困扰着我。

标签: jquery menu drop-down-menu expand


【解决方案1】:

尝试从原始hide()hover() 中删除.inpath。您还需要使用&gt;(直接后代选择器)进行更具体的选择。

$(document).ready(function() {
    $('#menu > ul > li:not(.inpath) ul').hide();
    $('#menu > ul > li:not(.inpath)').hover(

    function() {
        $('ul', this).slideDown(100);
        $('#menu li.inpath ul').hide();
    }, function() {
        $('ul', this).slideUp(100);
        $('#menu li.inpath ul').show();
    });
});

http://jsfiddle.net/MGkQC/7/

【讨论】:

  • 感谢您的回答 :-) 但是 - 当我将鼠标悬停在其他菜单项之一时,它应该隐藏活动子菜单 - 可行吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 2018-11-14
  • 2014-08-25
相关资源
最近更新 更多