I'm trying to create a simple accordion menu where ul nested in li is hidden until the parent li is clicked, which first hides all other nested ul if they are open, and then lays out the nested ul of that li.
The only other trick is that I want to remove the href for the parent li.
I have achieved most of this, except that my nested ul li inherits the above actions, even if I am targeting the parent class li. I know that I am missing something fundamental. thanks in advance
HTML
<ul>
<li.expanded><a href="foo">Lorum</a>
<ul>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
</ul>
</li>
<li.expanded><a href="foo">Lorum</a>
<ul>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
</ul>
</li>
<li.expanded><a href="foo">Lorum</a>
<ul>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
</ul>
</li>
<li.expanded><a href="foo">Lorum</a>
<ul>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
<li.leaf><a href="foo">Lorum</a></li>
</ul>
</li>
</ul>
JQuery
$(document).ready(function() {
$('ul ul').hide();
$('ul li.expanded a').removeAttr("href");
$('ul li').click(function(){
$('ul ul').hide('slow');
$(this).find('ul').toggle('slow');
});
});
;
source
share