2013-05-06 65 views
1

我有这种结构的菜单:jQuery的:只显示UL与孩子LI设置为类=活跃

<ul id="accordion"> 
<li><a href="#">Books</a> 
    <ul> 
    <li><a href="thrillers.html">Thrillers</a></li> 
    <li><a href="scifi.html">Sci-fi</a></li> 
    <li><a href="nf.html">Non-fiction</a></li> 
    </ul> 
</li> 
<li><a href="#">Games</a> 
    <ul> 
    <li><a href="rpg.html">RPG</a></li> 
    <li><a href="sim.html">Simulations</a></li> 
    <li><a href="action.html">Action</a></li> 
    </ul> 
</li> 
</ul> 

(等)

现在,我们的人点击“ RPG“我希望游戏子菜单在RPG页面上打开。所以,我决定一个类添加到选定李:

... 
<ul> 
    <li class="active"><a href="rpg.html">RPG</a></li> 
    <li><a href="sim.html">Simulations</a></li> 
    <li><a href="action.html">Action</a></li> 
</ul> 
... 

现在,我试图做的是有jQuery的找到UL一类=“激活”,然后打开该UL 。

我只是这个jQuery:

​​

我在onLoad部分,只需要经过什么有一个我想打开?

回答

2

这可能会帮助:

$('#accordion > li > ul > li.active').parent().slideDown('fast'); 
+0

太棒了,谢谢。看起来很简单,但我没有使用>字符。所以,这就是为什么我没有成功。再次感谢。 – user2353495 2013-05-06 10:39:50

2

尝试获得直接子>活跃李:

$(document).ready(function() { 
    $('#accordion li').children('ul').slideUp('fast'); //<--hide all child uls 
    $('#accordion > li').click(function() { ///<---perform a click event on li 
     $(this).addClass('active').siblings('li').removeClass('active'); //<--add active class to the clicked element and remove from other siblings li 
     $(this).siblings('li').find('ul').slideUp('fast'); // <---find the ul in the siblings and slide those up 
     $('> ul', this).slideDown('fast'); // <--then perform the slideDown 
    }); 
}); 

FIDDLE DEMO你可以试试这个了。