Hey Seb,

Welcome to the list. I'll look at your code but in the meantime, you 
should really check out Joern's accordian menu plugin:

http://bassistance.de/jquery-plugins/jquery-plugin-accordion/

It might speed things up for you.

Rey

Seb Duggan wrote:
> I'm just starting up with jQuery, and have run into a problem with my 
> navigation menu.
> 
> It's a vertical accordion menu, with each section opening when clicked, 
> and any other open sections close. Also, a section will close if it's 
> open and clicked.
> 
> So, I have the following code attached to the <a> elements in the menu:
> 
> 
> $('.topMenu').click(function(){
>     $(this).next().addClass('active');
>     $('ul.level1').filter(':visible').not('.active').slideUp('normal');
>     $('.active').slideToggle('normal');
>     $(this).next().removeClass('active');
>     return false;
> });
> 
> 
> The HTML looks like this:
> 
> 
> <ul>
> <li><a href="link.htm" class="topMenu">Section 1</a>
> <ul class="level1">
> <li><a href="link.htm">Link 1</a></li>
> <li><a href="link.htm">Link 2</a></li>
> </ul>
> </li>
> 
> <li><a href="link.htm" class="topMenu">Section 2</a>
> <ul class="level1">
> <li><a href="link.htm">Link 1</a></li>
> <li><a href="link.htm">Link 2</a></li>
> </ul>
> </li>
> 
> <li><a href="link.htm" class="topMenu">Section 3</a>
> <ul class="level1">
> <li><a href="link.htm">Link 1</a></li>
> <li><a href="link.htm">Link 2</a></li>
> </ul>
> </li>
> 
> </ul>
> 
> 
> 
> This flags the clicked link; closes all the sections at the same level 
> that are not the flagged link; toggles the clicked link; then removes 
> the flag; and finally returns false so the browser doesn't follow the link.
> 
> My problem is that, as the code stands, the closing and opening take 
> place at the same time; I want the open sections to close, and then when 
> that's finished the clicked section should toggle.
> 
> I initially thought the callback feature would handle this; but after 
> trying to work out why it didn't work, found that the rest of the script 
> continues.
> 
> I also thought chaining might be the answer, but couldn't get it to work 
> as I wanted...
> 
> How can I get the slideToggle to wait for the slideUp to complete?
> 
> 
> Seb
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> jQuery mailing list
> [email protected]
> http://jquery.com/discuss/

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to