2012-06-06 41 views
1

我有一個垂直滑動菜單,看起來像這樣:不要的slideToggle所有

<ul class="menu"> 
     <li>link</li> 
     <li>link</li> 
     <li class="more">link with submenu</li> 
      <ul class="submenu"> 
       <li>sub link 1</li> 
       <li>sub link 2</li> 
      </ul> 
     <li class="more">link with submenu</li> 
      <ul class="submenu"> 
       <li>sub link 1</li> 
       <li>sub link 2</li> 
      </ul> 
     <li>link</li> 
     <li>link</li> 

    </ul> 

的jQuery是這樣的:

jQuery(document).ready(function($) { 

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

$(this).parent().children(".submenu").slideToggle(500); }); 
}); 

我的問題是,當我點擊了「更多「每一個」 .submenu」正在的slideToggle(無論打開)

我該怎麼辦,所以它僅僅是被slidetoggled正確的子菜單?

謝謝。

回答

6

刪除對.parent()的呼叫。此外,您.submenu應該被嵌套在的<li>其所屬,讓你有以下的jQuery:

$("li.more").on("click", function() { 
    $("ul.submenu", this).slideToggle(500); 
}); 

而這個標記:

<ul class="menu"> 
    <li>link</li> 
    <li>link</li> 
    <li class="more"> 
     link with submenu 
     <ul class="submenu"> 
      <li>sub link 1</li> 
      <li>sub link 2</li> 
     </ul> 
    </li> 
    <li class="more"> 
     link with submenu 
     <ul class="submenu"> 
      <li>sub link 1</li> 
      <li>sub link 2</li> 
     </ul> 
    </li> 
    <li>link</li> 
    <li>link</li> 
</ul> 
+0

良好標記捕獲。 – Loktar

0

這一個?

$(this).next().eq(0).slideToggle(500); }); 
相關問題