【问题标题】:Menu with collapsable submenus on jQueryjQuery 上带有可折叠子菜单的菜单
【发布时间】:2014-04-01 14:11:56
【问题描述】:

我正在尝试使用可折叠子菜单制作菜单。我对 jQuery 很陌生)我的代码:

<script type="text/javascript">
    $(document).ready(function(){
    $('#list> li > ul')
    .hide()
    .click(function(e){
        e.stopPropagation();
    });
    $('#list> li').toggle(function(){
        $(this).find('ul').slideDown();
    }, function(){
        $(this).find('ul').slideUp();
    });
    });
</script>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"/>

<ul id="list">
    <li><a href="#">SUBMENU1</a>
        <ul>
            <li><a href="#">M11</a></li>
            <li><a href="#">M12</a></li>
            <li><a href="#">M13</a></li>
            <li><a href="#">M14</a></li>
        </ul>
    </li>
    <li><a href="#">SUBMENU2</a>
        <ul>
            <li><a href="#">M21</a></li>
            <li><a href="#">M22</a></li>
            <li><a href="#">M23</a></li>
            <li><a href="#">M24</a></li>
        </ul>
    </li>
</ul>

现在可以正常使用了,但是我希望在单击另一个子菜单时自动关闭所有打开的子菜单。所以一次只会打开一个子菜单。

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:
    $('#list > li').siblings().find('ul').hide();
    $('#list > li').click(function () {
        $(this).addClass('active').siblings().removeClass('active');
        $(this).siblings().find('ul').slideUp();
        $(this).find('ul').slideDown();
    });
    

    演示:

    http://jsfiddle.net/2QKe9/

    更新的演示:

    http://jsfiddle.net/2QKe9/2/

    【讨论】:

    • 谢谢!几乎是我需要的,我想通过单击最后打开的子菜单来关闭所有子菜单。我的错,我错误地描述了问题的本质..)
    • @rustemk,不客气。很高兴能帮助你。我在答案中添加了更新的演示。请检查。
    【解决方案2】:

    试试这个方法

    $(document).ready(function(){
    $('#list> li > ul')
    .hide()
    .click(function(e){
        e.stopPropagation();
    });
    $('#list> li').click(function(){
        if($(this).find('ul').is(':visible'))
        {
           $(this).find('ul').slideUp() 
        }
        else
        {
        $(this).siblings().find('ul').slideUp()
        $(this).find('ul').slideDown();
        }
    });
    });
    

    DEMO

    【讨论】:

    • 谢谢!几乎是我需要的.. 但是当我点击“SUBMENU2”时 - 它会打开,然后我点击“SUBMENU1” - 只有在第二次点击后才会打开..
    • @rustemk 如果有助于接受答案,我会根据您的需要更新小提琴和代码
    • 我想通过单击最后打开的子菜单来关闭所有子菜单。目前它没有关闭..)
    • @rustemk 如果有助于接受答案,我会根据您的需要再次更新我的小提琴和代码
    • @rustemk 很高兴为您提供帮助:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2015-04-19
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多