jQuery显示子菜单是否已单击父级

时间:2011-11-22 18:52:18

标签: javascript jquery html css

有人可以帮助代码。

我只想在点击子菜单父级时显示子菜单。

HTML

<ul>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a>
    <ul class="sub-menu">
        <li><a href="#">Submenu</a></li>
        <li><a href="#">Submenu</a></li>
    </ul>
</li>
<li><a href="#">Item</a></li>
<li><a href="#">Item</a>
    <ul class="sub-menu">
        <li><a href="#">Submenu</a></li>
        <li><a href="#">Submenu</a></li>
    </ul>
</li>
<li><a href="#">Item</a></li>
</ul>

因此,如果您单击父子菜单将显示。

这是小提琴链接 - http://jsfiddle.net/KhNCV/1/

5 个答案:

答案 0 :(得分:10)

$('.sub-menu').hide();

$("li:has(ul)").click(function(){

$("ul",this).slideDown();
});

http://jsfiddle.net/3nigma/KhNCV/2/

OR

$('.sub-menu').hide();

$("li:has(ul)").click(function(){

$("ul",this).toggle('slow');
});

http://jsfiddle.net/3nigma/KhNCV/4/

答案 1 :(得分:2)

$('.sub-menu').hide();

$("a").click(function(){

    $(this).parent().children("ul").toggle();

})

查看此链接  http://jsfiddle.net/KhNCV/6/

答案 2 :(得分:1)

这是your example working。目前还不清楚你为什么需要a标签,因为你可以在CSS中使用cursor:pointer来使li看起来像是可点击的。我会假设你想在IE浏览器上做一些漂亮的徘徊,那只是CSS吗?如果没有,您可以通过删除它们来简化。

而不是在.submenu上执行hide(),你应该使用CSS(用DOM而不是onReady / load解析)。

.sub-menu { display: none; }

接下来是您切换菜单的代码:

$('ul li a').click(function() {
    $(this).parent().find('ul.sub-menu').toggle();
    return false;
});

答案 3 :(得分:1)

$('li a').click(
function() {
    $(this).next().slideToggle();
})

答案 4 :(得分:0)

试试这个

$(function(){

   //Hide all the sub menus
   $('.sub-menu').hide();

   $("li:has(ul)").click(function(){
      //Find the child ul and slideToggle
      $(this).children("ul").slideToggle();
   });
});