2013-10-31 24 views
0

我想創建一個簡單的可摺疊的多層次,其中每個ul是可摺疊的。我很難判斷我做錯了什麼。 我的劇本是jsfiddlejquery簡單的可摺疊列表問題

<ul id="usernav"> 
<li>Manage 
    <ul > 
     <li >child11 
     <ul> 
      <li> some1</li> 
      <li> some2</li> 
     </ul> 
     </li> 
     <li>child12</li> 
    </ul> 
</li> 
<li>Subscriptions 
    <ul> 
     <li>E-Briefings</li> 
     <li>E-Briefings Subscriptions</li> 
     <li>Knowledge Briefings</li> 
    </ul> 
</li> 
    <li>Media Store 
    <ul> 
     <li>Image Store</li> 
     <li>Document Store</li> 
     <li>Media Store</li> 
    </ul> 
</li> 

我的劇本是

$('#usernav').find('ul').hide();  
$('li').click(function() { 
    $(this).children('ul').toggle(); 
}); 
+0

當你點擊一個嵌套裏,那點擊氣泡也向家長裏,你需要防止起泡http://jsfiddle.net/vTdRg/1/ –

回答

2

當你點擊一個元素的孩子,你也可以點擊的元素。所以當你點擊一個孩子li時,事件也會觸發父母li s。使用stopPropagation()可防止事件冒泡。

http://jsfiddle.net/nrVYn/

$('#usernav').find('ul').hide(); 

$('li').click(function(e) { 
    $(this).children('ul').toggle(); 
    e.stopPropagation(); 
}); 
+0

upvoted,因爲它是正確的答案,但任何'e.stopPropagation()'或'e.preventDefault()'的應用程序應始終按操作順序排列。 – PlantTheIdea

+0

@PlantTheIdea完全不是真的,它可以出現在處理器的任何地方 –

+0

@PlantTheIdea請詳細說明你的意思。 – superartsy