2014-10-10 21 views
0

任何人都可以请使用JQuery切换帮助解决这个问题吗?我尝试了所有我能做的,但却无法完成这项工作。使用JQuery的问题切换

基本上我有一个菜单,有2个级别的子菜单。子级别被隐藏,直到主菜单项被点击。问题是,当一个主菜单项被点击时,只显示1级菜单 - 级别2从不显示。我已经尝试通过类名称和其他各种方法来实现这些目标,但他们只是拒绝按照我预期的方式显示。我下面有一个JS小提琴,非常感谢您的帮助。

非常感谢您的任何帮助。

**更新到帖子。只有主菜单项(class =“mc”)负责切换菜单。子菜单只是链接(这就是为什么我只是点击目标class =“mc”)。主菜单项目可能并不总是具有2级项目。

JS提琴: http://jsfiddle.net/Dunce/wdcwewhq/25/embedded/result/

<script> 
$(function(){ 

// hide all sub menu items on load. 
$("#lhsNav ul").hide(); 

$('.mc','#lhsNav').click(function(e){ 
    e.preventDefault(); //prevent default action 

    //show or hide all sub menu items for selected main menu item 
    $(this).nextAll().slideToggle(); 
    //$(this).next().slideToggle() 
    //$(this).find("ul").slideToggle(); 
}); 

}); 
<script> 
<ul id="lhsNav"> 
<li><a id="mc1" href="#" class="mc">Main Menu Item (Click To Toggle Sub Menus)</a> 
    <ul><li><a href="#" id="sc1" class="sc1">Sub Menu Level 1</a> 
      <ul><li><a href="#" id="sc2" class="sc2">-> Sub Menu Level 2</a></li></ul> 
     </li> 
    </ul> 
</li> 
<li><a id="mc2" href="#" class="mc">Main Menu Item (Click To Toggle Sub Menus)</a> 
    <ul><li><a href="#" id="sc3" class="sc1">Sub Menu Level 1</a> 
      <ul><li><a href="#" id="sc4" class="sc2">-> Sub Menu Level 2</a></li></ul> 
     </li> 
    </ul> 
</li> 
</ul> 

<p> 
This menu has 2 sub level categories - These are hidden on load. 
</p> 
<p> 
    When a Main Menu item is clicked, the idea is to show all of the sub menu items (level 1 and level 2), that belong to that main menu. The problem is that only sub menu level 1 items are being shown. Sub menu level 2 items are never seen/toggled - why not? What am I doing wrong? I have tried alternative ways of targetting the elements, but nothing works. 
</p> 
+0

子菜单中的不具有类'mc' – 2014-10-10 12:00:23

回答

0

你只靶向元素与.mc类到哪里都是在子菜单中的没有这样的类。相反,你可以在li目标锚元素具有ul作为其子

// hide all sub menu items on load. 
 
$("#lhsNav .mc + ul").hide(); 
 

 
$('a.mc', '#lhsNav').click(function(e) { 
 
    e.preventDefault(); //prevent default action 
 

 
    //show or hide all sub menu items for selected main menu item 
 
    $(this).nextAll().slideToggle(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul id="lhsNav"> 
 
    <li> 
 
    <a id="mc1" href="#" class="mc">Main Menu Item (Click To Toggle Sub Menus)</a> 
 
    <ul> 
 
     <li> 
 
     <a href="#" id="sc1" class="sc1">Sub Menu Level 1</a> 
 
     <ul> 
 
      <li> 
 
      <a href="#" id="sc2" class="sc2">-> Sub Menu Level 2</a> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 
    </li> \t 
 
    <li> 
 
    <a id="mc2" href="#" class="mc">Main Menu Item (Click To Toggle Sub Menus)</a> 
 
    <ul> 
 
     <li> 
 
     <a href="#" id="sc3" class="sc1">Sub Menu Level 1</a> 
 
     <ul> 
 
      <li> 
 
      <a href="#" id="sc4" class="sc2">-> Sub Menu Level 2</a> 
 
      </li> 
 
     </ul> 
 
     </li> 
 
    </ul> 
 
    </li> \t 
 
</ul> 
 

 
<p> 
 
    This menu has 2 sub level categories - These are hidden on load. 
 
</p> 
 
<p> 
 
    When a Main Menu item is clicked, the idea is to show all of the sub menu items (level 1 and level 2), that belong to that main menu. The problem is that only sub menu level 1 items are being shown. Sub menu level 2 items are never seen/toggled - why not? What am I doing wrong? I have tried alternative ways of targetting the elements, but nothing works. 
 
</p>

+0

谢谢你的回答,但是我并不像我应该清楚,对不起。只有主菜单项(class =“mc”)负责切换菜单。点击一个主菜单项应该切换所有子菜单项。 Jquery .nextAll(),在单击主菜单项的上下文中应该可以工作,但它不会。 – MRB 2014-10-10 13:01:17

+0

@MRB查看更新 – 2014-10-10 13:05:19

+0

这是工作阿伦谢谢你。我不完全理解这是为什么,但我会研究它,直到我做到!感谢您的帮助,非常感谢。 – MRB 2014-10-10 13:14:18