【问题标题】:Superfish: How to keep sub menu open after it has been clickedSuperfish:单击后如何保持子菜单打开
【发布时间】:2011-02-17 04:01:01
【问题描述】:

我遇到以下情况。我有一个菜单,如果将鼠标悬停在菜单上,则会出现一个子菜单,如果鼠标移出子菜单就会消失,现在如果我单击子菜单中的某个项目,我想要以下内容,我希望子菜单加载新页面后保持打开状态。我正在为此使用 superfish Jquery 插件。

这可能吗?如果如何。

我的 html 代码

<div id="nav">
        <div id="nav2">
            <ul class="sf-menu sf-navbar ">
                <li>
                                        <a title="HOME" class="sf-with-ul " href="/index.php?r=site/index&amp;sid=1">HOME</a>               </li>   
            </ul>
            <ul class="sf-menu sf-navbar">
                <li>

                    <a href="?sid=2" id="gallery" class="sf-with-ul selected_main">GALLERY</a>
                    <ul class="subs" id="sub1"><li class="arrow"><img src="images/arrow.gif" /></li><li><a title="Kitchens" href="/index.php?r=images/sddsd&amp;id=1">Kitchens</a></li><li><a title="Vanities" href="/index.php?r=images/sddsd&amp;id=2">Vanities</a></li></ul>             </li>    
            </ul>
            <ul class="sf-menu sf-navbar ">
                <li>
                    <a href="?sid=3" class="sf-with-ul " >ACCESSORIES</a>
                                        <ul class="subs" id=""><li class="arrow"><img src="images/arrow.gif" /></li><li><a title="Door Handles" href="/index.php?r=images/sddsd&amp;id=2">Door Handles</a></li><li><a title="Spanners" href="/index.php?r=images/sddsd&amp;id=1">Spanners</a></li></ul>             </li>   
            </ul>

            <ul class="sf-menu sf-navbar ">
                <li>
                                        <a title="CONTACT US" class="sf-with-ul " href="/index.php?r=site/contact&amp;sid=4">CONTACT US</a>             </li>   
            </ul>   
        </div>

</div>

然后 超级鱼代码

$(function(){
             $("ul.sf-menu").superfish({ 
                 delay:         0,
                 speed:         'fast',
                 autoArrows:    false,
                 dropShadows:   false
            });
        });

我还注意到下面的 css 代码用于显示项目

left:   0;
top:    2.5em;
z-index:        99;

【问题讨论】:

    标签: php jquery css jquery-plugins


    【解决方案1】:

    我为您发布a demo。基本上我已经在 superfish 函数中添加了一个“onHide”函数,然后是一些额外的代码来保持菜单的持久性。

    附加 CSS(默认的 Suckerfish.css)

    .sf-menu li.sfSelected {
     background-color: #CFDEFF;
    }
    

    脚本

    $(function(){
        var menu = $("#nav");
    
        menu.find("ul.sf-menu")
            .superfish({
                delay:         0,
                speed:         'fast',
                autoArrows:    false,
                dropShadows:   false,
                onHide:        function(){
                    if (this.parent().is('.sfPersist')) {
                        this.show().css('visibility','visible').parent().addClass('sfHover');
                    }
                }
            })
            .find('li > ul > li').click(function(){
                // hide previously persistent children (LOL that just sounds wrong)
                menu.find('.sfPersist')
                    .removeClass('sfPersist sfHover')
                    .find('> ul').hide().css('visibility','hidden');
    
                // add children that should be persistent
                if ($(this).is('.sfSelected')) {
                    // if previously selected, keep hidden
                    menu.find('li.sfSelected').removeClass('sfSelected');
                } else {
                    // Hide other selected classes
                    menu.find('li.sfSelected').removeClass('sfSelected');
                    // if newly selected, then show
                    $(this)
                        .addClass('sfSelected') // remember which one is selected
                        .parent()
                        .show().css('visibility','visible')
                        .parent().addClass('sfHover sfPersist');
                }
            });
    });
    

    【讨论】:

    • 完美。这很好用。我正在使用 Drupal 库。我只是将脚本粘贴到 superfish.js 中,而没有函数包装器,它运行良好。感谢您发布此解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多