仅在子菜单上显示子菜单的子菜单

我试图在菜单上显示子菜单。 我已成功进入子菜单级别1.但是当我进入子菜单级别2(即子菜单的子菜单)时,它无效。 我想仅在hover1级子菜单时显示2级子菜单。 以下是我尝试过的代码

 

以下是jQuery

 $('ul.submenu').hide(); $('ul.nav > li').hover(function () { if ($(this).find('ul.submenu').length > 0) { $(this).find('ul.submenu').stop().slideDown('slow'); } },function () { if ($(this).find('ul.submenu').length > 0) { $(this).find('ul.submenu').stop().slideUp('slow'); } }); 

请在这里找到小提琴: http : //jsfiddle.net/Midhun28/RbY83/1/

据我所知,你希望将子菜单hover在上面一级的列表项上

  

我将子菜单类添加到我希望它们最初隐藏的所有元素中。 然后我对jquery代码进行了一些修改,以便与所有子菜单一起使用

 $('ul.submenu').hide(); $('ul.nav > li, ul.submenu > li').hover(function () { if ($('> ul.submenu',this).length > 0) { $('> ul.submenu',this).stop().slideDown('slow'); } },function () { if ($('> ul.submenu',this).length > 0) { $('> ul.submenu',this).stop().slideUp('slow'); } }); 

希望这对你有用http://tsfiddle.net/U7mqM/

如果希望在将鼠标hover在子元素上时触发它们,请使用mouseenter和mouseleave事件。

 $('.nav ul').hide(); $('.nav li').mouseenter(function() { $(this).children('ul').stop().slideDown('slow') }).mouseleave(function() { $(this).children('ul').stop().slideUp('slow') }); 
 jQuery(function(){ topNav = jQuery('ul.topnav > li > a'); if(jQuery(topNav).hasClass('hover')){ return } jQuery(topNav).hover(function(){ jQuery(this).addClass('hover'); jQuery(this).next('.subnav').slideToggle('', function(){ jQuery(topNav).removeClass('hover'); }); }); });