2013-12-20 47 views
0

下面的代码将使用mousenter/mouseleave隐藏并显示取决于2个元素的子菜单。如何从多个选择器中删除这个.next()元素

var count = 0; 
$('.parent-menu, .sub-menu').mouseenter(function(){ 
    count ++; 
    $('.sub-menu').show(); 
}).mouseleave(function(){ 
    count--; 
    if(!count) { 
     $('.sub-menu').hide(); 
    } 
}); 

唯一的是它显示每个父母菜单上的所有子菜单。我知道$(this.next()..etc)将采取相关的子菜单(因为它与其中的一切东西),但我如何将目标这一点时,我使用多个选择器?

HTML

 <li class="parent-menu"> 
     <a href="#">Sports</a> 
     </li> 
     <li class="sub-menu"> 
      <div class="container menu-background"> 
      <ul> 
       <li class="heading"><a href="#">Running</a></li> 
       <li><a href="#">Footwear</a></li> 
       <li><a href="#">Apparel</a></li> 
       </ul> 
      </div> 
     </li>       
+0

你可以显示你的html吗? –

+0

添加了HTML,谢谢 – lxm7

回答

1

你要这个?:

var count = 0; 
$('.parent-menu, .sub-menu').mouseenter(function(){ 
    count ++; 
    $(this).next().show(); 
}).mouseleave(function(){ 
    count--; 
    if(!count) { 
     $(this).next().hide(); 
    } 
}); 

$(this).next().hide();将选择.SUB菜单。

+0

谢谢salivan,它几乎在那里,除了这是采取.parent菜单,而不是.sub菜单。我将如何选择第二个选择器?我尝试了$(this)[1],但是这打破了整个事情。 – lxm7

+0

@ lxm7您的html标记不正确,子菜单必须是父菜单的子项。这也是CSS悬停菜单的工作原理!但是如果你想保持这个结构而不是简单地使用$(this).next()。hide()/ show() – 2013-12-20 12:30:33

相关问题