繁体   English   中英

jQuery手风琴菜单-默认情况下无法隐藏子菜单

[英]jQuery accordion menu - trouble hiding submenus by default

我正在尝试创建一个jQuery手风琴风格的菜单,并且几乎可以正常使用,但是我花了几个小时试图弄清楚为什么页面加载时默认显示子菜单。

我尝试使用CSS隐藏它们,由于某种原因,它们根本不会滑下来。 我也尝试过将它们隐藏在jQuery中,并遇到相同的问题。

我显然在某处出错了,但是我无法在哪里解决。

我为HTML和CSS创建了一个JSFiddle: http : //jsfiddle.net/rcord/Gd7DM/7/

我的jQuery是:

    $(document).ready(function () {
      $('#mobnav > ul > li > a').click(function () {
        $('#mobnav li').removeClass('active');
        $(this).closest('li').addClass('active');
        var checkElement = $(this).next();
        if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
        $(this).closest('li').removeClass('active');
        checkElement.slideToggle('normal');
      }
      if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {
        $('#mobnav ul ul:visible').slideToggle('normal');
        checkElement.slideToggle('normal');
      }
      if ($(this).closest('li').find('ul').children().length === 0) {
        return true;
      } else {
        return false;
      }
     });
    });

谢谢!

编辑:非常感谢两个回答的人-效果很好。 我是stackoverflow的新手,我不确定应该在哪里说谢谢,因为它说不要使用注释...

将菜单选择器从nav ul更改为#mobnav > ul否则,您将在第一次单击时切换nav内部的所有列表

$(function () {
    var pull = $('#pull');
    menu = $('#mobnav > ul');
    $(menu).on('load').hide();
    menuHeight = menu.height();
    $(pull).on('click', function (e) {
        e.preventDefault();
        menu.slideToggle();
    });
...
});

更新的小提琴

您的顶部导航选择器menu = $('nav ul'); 选择所有ul元素,将其更改为`#mobnav> ul

var pull = $('#pull');
menu = $('#mobnav > ul');
$(menu).on('load').hide();
menuHeight = menu.height();
$(pull).on('click', function (e) {
    console.log('p')
    e.preventDefault();
    menu.slideToggle();
});

演示: 小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM