2013-12-20 46 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

相關問題