Actually Seb,
Use this:
$('.topMenu').click(function(){
$('ul.level1:visible').slideUp('normal');
$(this).next().slideDown('normal');
return false;
});
Rey...
Rey Bango wrote:
> Hi Seb,
>
> I think this is what you want:
>
> $('.topMenu').click(function(){
>
> $('ul.level1').filter( ":visible" ).slideUp('normal');
> $(this).next().slideDown('normal');
>
> return false;
> });
>
> Let me know and if not, I'll hack at it some more.
>
> 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/
>
_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/