2011-03-24 86 views
0

我有几个类menu-item。当我将鼠标移到menu-item上时,子菜单始终显示。 但是,正如我们所见,sub-menu仅在id=menu-item-2292如何在jQuery中只显示菜单的子菜单?

<ul class="menu" id="menu-menu-principal"> 
    <li class="menu-item" id="menu-item-2289"><a href="/about">À propos</a></li> 
    <li class="menu-item" id="menu-item-2292"> 
     <a href="/photos">Photos</a> 
     <ul class="sub-menu"> 
     <li class="menu-item" id="menu-item-2296"><a href="/portrait">Portrait</a></li> 
     </ul> 
    </li> 
</ul> 

我怎样才能做到这显示sub-menu只有menu-itemsub-menu

+0

是它始终将是具有子菜单或可以在变化的同一菜单项。如果是的话,你如何生成列表? – Belinda 2011-03-24 11:32:25

回答

2
$('.menu-item').hover(function(){ 
    var submenu = $(this).find('.sub-menu'); 
    if (submenu.length != 0) { 
    submenu.show(); 
    } 
}, function(){ 
    $(this).find('.sub-menu').hide(); 
}); 
+0

你是天才!这是完美的。谢谢Shree – Steffi 2011-03-24 11:53:21

+0

哦,不,对不起,它不起作用。当我将鼠标移出'menu-item'时,子菜单消失... – Steffi 2011-03-24 12:00:34

+0

不应该消失吗? – 2011-03-24 12:38:04

1

可以使用has()选择减少选定的组liul

$(".menu-item").has('ul.sub-menu').hover(function() { 
    $('.sub-menu', this).show(); 
}, function() { 
    $('.sub-menu', this).hide(); 
}); 
+0

是的,很好。但现在,问题是:当我试图将鼠标悬停在“子菜单”上时,此人隐藏了......为什么?查看我的代码:'$(“。menu-item”)。has('ul.sub-menu')。hover( function(){$('。sub-menu')。show();}, function(){$('。sub-menu')。hide();} );' – Steffi 2011-03-24 11:44:56

+0

请发布您的CSS样式。 你还应该限制'show()'和'hide()'到'this'中的元素。 我更新了我的帖子 – felixsigl 2011-03-24 11:52:09