【问题标题】:Slide Down Menu - How to allow only one path open at a time?向下滑动菜单 - 如何一次只允许打开一个路径?
【发布时间】:2015-02-13 19:51:34
【问题描述】:

目前,如果我打开一个菜单并单击另一个菜单,它会打开第二个菜单,而第一个保持打开状态。我什至可以同时打开所有这些!

我想改变这种行为,这样我一次打开的菜单就不会超过一个。 (占所有级别/子菜单)

假设我打开“主页”并单击“项目 4”。出现“子项目 1”和“子项目 2”。如果我然后单击顶部的“联系人”,则打开的另一个菜单应该在“联系人”向下滑动之前关闭(理想情况下,所有级别都应该一次向上滑动一个)。

我知道问题在于 Javascript,所以我不会在此处粘贴 HTML 和 CSS,以免占用太多空间。

JSFiddle

谢谢

$(function(){
    $('ul#menu li').on('click', function(){
         $(this).children('ul').delay(20).slideToggle(600);
    });
});

$('ul').on('click', function(e){
  e.stopPropagation();
});

【问题讨论】:

    标签: javascript jquery css menu slidetoggle


    【解决方案1】:

    试试这个Fiddle

    JS代码:

        $(function(){
            $('ul#menu li').on('click', function(){
                if($(this).children('.drop').size() > 0) {
                    $("ul.drop").slideUp();
                    $("ul.drop").find('ul').hide();
                } else {
    
                }
    
             $(this).children('ul').delay(20).slideToggle(600);
            });
        });
    
        $('ul').on('click', function(e){
          e.stopPropagation();
        });  
    

    【讨论】:

    • 几乎,现在的问题是,如果您深入几级(主页>项目 4>子项目 1)然后移动到另一个菜单,当您再次单击主页时,它会一直打开到你所在的位置......它真的不应该。
    • 看起来确实如此!谢谢。不让它们重叠怎么办?让那些打开的幻灯片在您刚刚单击的幻灯片之前向上滑动?这可能吗?
    • 我认为,您可以使用.hide() 而不是.slideUp()。这将减少重叠。顺便说一句,如果这个答案对你有用,你会接受吗? :)
    • 我很高兴接受它,因为您解决了最重要的问题。没问题。 ;) 不幸的是,我无法失去 slideUp。这部分很难修复还是根本不可行?
    猜你喜欢
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2021-10-19
    • 2017-01-10
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多