2012-05-01 2 views
0

Я настроен на простой аккордеон для моего навигатора на мобильных устройствах. HTML имеет структуру, как это:Сделать вложенное меню аккордеона Jquery закрытым при нажатии новой вкладки.

<nav> 
    <ul id="topMenu"> 
    <li> 
     <ul> 
      <li><h3><a href="#">Work</a></h3></li> 
      <li><a href="/work/">Brand ID</a></li> 
      <li><a href="/work/">Print</a></li> 
      <li><a href="/work/">Book & Editorial</a></li> 
      <li><a href="/work/">Web</a></li> 
      <li><a href="/work/">Packaging</a></li> 
      <li><a href="/work/">Exhibit</a></li> 
     </ul> 
    </li> 
    <li> 
     <ul> 
      <li><h3><a href="#">About</a></h3></li> 
      <li><a href="/about/">Our Story</a></li> 
      <li><a href="/about/">Methodology</a></li> 
      <li><a href="/about/">Team</a></li> 
      <li><a href="/about/">Studio</a></li> 
      <li><a href="/about/">Services</a></li> 
      <li><a href="/about/">Partners</a></li> 
     </ul> 
    </li> 
</ul> 
</nav> 

Когда размер экрана достигает подвижен, у меня есть целый новый набор CSS (с использованием медиа запросов) для того чтобы достигнуть экран так же, как это:

Accordion Menu

Первичные дисплеи, а остальные скрыты. Я использую jquery для создания гармонического стиля, как показано ниже:

$("nav #topMenu li ul").toggle(function(){ 
    $(this).children("li").stop().slideDown(); 
}, function(){ 
    $(this).children("li:nth-child(1n+2)").stop().slideUp(); 
}); 

Это прекрасно работает; однако я ищу поведение, когда открывается одна панель, остальные закрываются. Итак, в любой момент времени на аккордеоне будет открыта только одна панель. Это обычное поведение для аккордеонов.

Вы можете помочь с jquery, чтобы сползать все открытые панели, когда пользователь нажимает на любой из элементов списка родительского уровня? Благодаря!

+0

Я мог бы легко добавить это до первого slideup, но это не кажется, что лучший способ для обойти это: $ ("# mobile #topMenu li li: nth-child (1n + 2)"). slideUp(); – JCHASE11

ответ

Смежные вопросы