2013-10-22 135 views
-1

我有一个响应方的菜单。此菜具有类似的子菜单:隐藏李的孩子,点击显示

.navbar ul li ul 

我想如果父菜单有喜欢我的代码,我想隐藏它,当我需要表现出来,单击父菜单来显示它的子菜单。

我试过这段代码,但它不起作用。

$(".navbar ul li").each(function(index, element) { 
    if ($(this).children('ul').attr('class')){ 
    } 
    else { 
     $(this).find('span').remove(); 
    } 
}); 

$(".navbar ul li span").click(function(){ 
    $(this).toggleClass('ss'); 
    $(this).parent('li').toggleClass('active-mobile'); 
    $(this).parent('li').children('ul').slideToggle(); 
}); 
+3

粘贴HTML标记 – Hiral

+0

我强烈建议你设置一个ID到要显示/隐藏UL,添加样式display:none和创建一个onClick函数来设置显示为真 – AlvaroAV

+1

你删除跨度,然后想要在其上切换一个类?你也检查ul是否有一个类,但不是它的名字? – Christoph

回答

1

您的代码看起来过于复杂。尝试简单的方法。

隐藏在一开始所有子菜单使用CSS:

#nav li > ul { 
    display:none; 
} 

然后切换类指示所示的元素(并可能使用一些动画):

$('ul#nav > li').click(function() { 

    $(".show").removeClass("show").find("ul").slideUp(); 
    $(this).addClass("show").find("ul").slideDown();  
}); 

这是最基本的工作下拉菜单,当然可以用很多其他东西来扩展它。例如。示例小提琴有一个额外的检查,如果点击的元素已经显示,并切换它,如果是这种情况。但是这个基本的代码应该给你一个足够的起点。

Demo