2013-05-30 108 views
0

我正在使用简单的jquery手风琴菜单。但我希望列表中的第二项默认打开,而不是:第一个简单的JQuery手风琴菜单:默认打开第二个

这怎么办?

function initMenu() 
{ 
    $('#menu ul').hide(); 
    $('#menu ul:first').show(); 
    $('#menu li a').click(function() 
    { 
      var checkElement = $(this).next(); 
      if((checkElement.is('ul')) && (checkElement.is(':visible'))) 
      { 
       return false; 
      } 
      if((checkElement.is('ul')) && (!checkElement.is(':visible'))) 
      { 
       $('#menu ul:visible').slideUp('normal'); 
       checkElement.slideDown('normal'); 
       return false; 
      } 
    }); 
} 
$(document).ready(function() {initMenu();}); 

我也想知道如果我可以用一个选择的类,以帮助使这更动态:

<div id="work_menu"> 
    <ul id="side_menu" class="nav_categories">  
     <li> 
      <a href="celebratory-use">Celebratory Use</a> 
      <ul> 
       <li><a href="platters">Platters</a></li> 
       <li><a href="celebratory-servers">Servers</a></li> 
      </ul> 
     </li> 
     <li><a class="selected" href="daily-use">Daily Use</a> 
      <ul> 
      <li><a href="bowls">Bowls</a></li> 
      <li><a href="butter-dishes">Butter Dishes</a></li> 
      <li><a href="mugs">Mugs</a></li> 
      </ul> 

     </li>  </ul> </div> 
+0

任何jsfiddle.net? –

+0

http://jsfiddle.net/eastwooddesign/FbtMj/ –

回答

1

尝试的$('#menu ul:eq(1)').show();代替$('#menu ul:first').show();,这将适用.show()到第二元件ul元素#menu。没有HTML,很难看出这是否是合适的解决方案。

为了让这个在ul显示给出.selected类项目之后到来,改变$('#menu ul:eq(1)').show();$('#side_menu li > a.selected + ul').show();,只要.selected类总是应用于<a>。如果您希望将其应用于<li>的另一个同级元素,则将选择器更改为$('#side_menu li .selected + ul').show();,这有点更一般化。

+0

这实际上是有效的,但为了让菜单更有活力,有没有办法使用选定的类并使其显示?查看更新后的HTML代码 –

+0

@PeterEastwood请查看我对我的回答所做的更改。 –

+0

谢谢安德鲁!非常感谢! –