I've been trying to create a basic accordion effect using unordered lists and, having looked through some examples on learningjquery.com, I think I'm close. I'm having trouble navigating through the hierarchy though. An example list is below. Any links with a class of 'expandLink' are supposed to reveal the nested list below and hide any other nested lists:

<div class="mcon">
<ul>
<li><a href="http://www.example.com";>Example</a></li>
<li><a href="http://www.yahoo.co.uk";>Yahoo</a></li>
<li><a href="" class="expandLink">More</a></li>
   <ul class="vsubmenu">
   <li><a href="http://www.bbc.co.uk";>beeb</a></li>
   <li><a href="http://news.bbc.co.uk";>beeb news</a></li>
   </ul>
<li><a href="http://www.cnn.com/";>CNN</a></li>
<li><a href="http://www.jquery.com";>jQuery</a></li>
<li><a href="" class="expandLink">Not news</a></li>
   <ul class="vsubmenu">
   <li><a href="http://sport.bbc.co.uk";>beeb sport</a></li>
   </ul>
<li><a href="http://www.msn.com/";>MSN</a></li>
</ul>
</div>

The script I'm trying to get working is:

$(document).ready(function(){
   $('div.mcon ul.vsubmenu').hide();
   $('div.mcon a.expandLink').click(function() {
   $(this).next('ul').slideToggle('fast')
   .siblings('ul.vsubmenu:visible').slideUp('fast');
   return false;
   });
});

I think it's close. If I remove the trailing </li>'s then the sub list displays so I guess 'next' is not correct in this instance?

Any help would be greatly appreciated :)

Gareth

Reply via email to