在jQuery的手风琴菜单中找到下一个兄弟

问题描述:

所以,我的问题是,我似乎无法找到下一个()兄弟到下面的嵌套UL LI。当设置为隐藏时。我能找到它时,它不会被设置为隐藏容易:在jQuery的手风琴菜单中找到下一个兄弟

  • 这工作,当我注释掉JS并没有什么隐藏。 //$(".vertNavigation李UL A“)隐藏() ;

  • 添加此处以点击功能: $(this).next()。css(“background”,“yellow”)。slideToggle(“normal”);

目标是做相反的事,点击按钮ONE和slideDown嵌套ul等等。我在这里错过了什么?

HTML代码:

</head> 

<body> 
<div class = "vertNavigation"> 
    <ul> 
     <li><a href="#" id = "button One">BUTTON ONE</a> 
      <ul> 
       <li><a href="#">sub menu 1</a> 
       <li><a href="#">sub menu 2</a> 
       <li><a href="#">sub menu 3</a> 
       <li><a href="#">sub menu 4</a> 
      </ul> 
     </li> 
     <li><a href="#" id = "button Two">BUTTON TWO</a> 
      <ul> 
       <li><a href="#">sub menu 1</a> 
       <li><a href="#">sub menu 2</a> 
       <li><a href="#">sub menu 3</a> 
       <li><a href="#">sub menu 4</a> 
      </ul> 
     </li>  
     <li><a href="#" id = "button Two">BUTTON THREE</a> 
      <ul> 
       <li><a href="#">sub menu 1</a> 
       <li><a href="#">sub menu 2</a> 
       <li><a href="#">sub menu 3</a> 
       <li><a href="#">sub menu 4</a> 
      </ul>   
     </li>  
     <li><a href="#" id = "button Two">BUTTON FOUR</a> 
      <ul> 
       <li><a href="#">sub menu 1</a> 
       <li><a href="#">sub menu 2</a> 
       <li><a href="#">sub menu 3</a> 
       <li><a href="#">sub menu 4</a> 
      </ul>   
     </li>  
    </ul> 
</div> 

</body> 
</html> 

CSS代码:

.vertNavigation ul { 
    list-style-type: none; 
    padding-left: 0; 
    margin-lef: 0; 
} 

.vertNavigation li { 
    display: inline; 
} 

.vertNavigation a { /*main menu*/ 
    display: block; 
    width: 100px; 
    text-decoration: none; 
    margin: 2px 0px 2px 0px; 
    padding: 6px 15px 3px 15px; 
    background-color: #EAEAEA; 
    color: #333; 

    font-size: .8em; 
} 

.vertNavigation li ul a { /*sub menu*/ 
    text-decoration: none; 
    border-bottom: solid 1px #333; 
    border-length: 50px; 
    margin: 2px 0px 2px 0px; 
    background-color: #FFF; 
    color: #333; 
} 

JS代码:

google.load("jquery", "1.6.2"); 

google.setOnLoadCallback(function(){ 

    $(".vertNavigation li ul a").hide(); 
    $(".vertNavigation ul li a").click(function() 
    { 
     //$(this).next().slideToggle("normal"); 
     $(this).next().slideDown("normal"); 

     return false; 
    }); 

}); 

试试这个:

$(".vertNavigation > ul > li > ul").hide(); 
$(".vertNavigation > ul > li > a").click(function(e){ 
    e.preventDefault(); 
    $(this).next('ul').slideToggle(); 
}); 

Check the live working solution

+0

Shef,谢谢!你回答了我的问题,但是preventDefault()不允许我链接一个URL,对吗? – milkIt

+0

*(按意外返回)... *我喜欢你给我看的东西。您冒泡回注册点击,并且您还重新排列了我的hide()目标。你可以告诉我是jQuery的新手。 – milkIt

+0

@milkIt:手风琴本身将无法链接到某处,否则手风琴功能将无法正常工作,因为当您希望子ul显示时单击链接时,该链接会将您带到某个地方其他。使用更新后的代码100%确保子'ul'上的链接可以正常工作。 :) – Shef