2013-04-24 50 views
0

我有一個html代碼,我用無序列表來顯示目錄結構。 在點擊li標籤時,我調用一個js函數(比如說changecss()),在這裏我阻止了孩子lis的顯示,使它們可見。但是點擊孩子lis。 如果我點擊孩子李,他們也調用相同的函數changecss()。 他們沒有附加onclick事件,但他們仍然稱這些功能,而我點擊這些李。從父列表中的HTML繼承ID做的列表?

下面是代碼:

    類1 subject1
  • 額外的類2
  • 額外的類3

 </li> 
     <li>Subject 2</li> 
     <li>Subject 3</li> 
    </ul> 

</li> 
<li id="second" onclick="showSubList(this)">Class 2 
<ul style="display:none" > 
     <li >subject1 
      <ul > 
       <li> extra class 2</li> 
      <li>extra class 3</li> 
      </ul> 

     </li> 
     <li>Subject 2</li> 
     <li>Subject 3</li> 
    </ul> 


</li> 
<li>Class 3</li> 
<li>Class 4</li> 

JavaScript來這是: 函數showSubList(e){alert(e.id);

 if(e.getElementsByTagName("ul")[0].style.display == "none") 
     { 
     e.getElementsByTagName("ul")[0].style.display="block"; 
      } 
     else if(e.getElementsByTagName("ul")[0].style.display == "block") 
     { 
      e.getElementsByTagName("ul")[0].style.display="none"; 
      } 
    }; 

您也可以點擊這裏: http://jsfiddle.net/TTYMm/

對這種行爲的任何想法?

謝謝。

這裏是可能的解決辦法: http://jsfiddle.net/TTYMm/1/

謝謝你們

+1

你的鏈接是空 – Kingalione 2013-04-24 12:42:23

+0

歡迎SO。 請edi你的帖子把一個有效的jsfiddle鏈接。 另外,你可能想編輯你的消息來覈對一下拼寫檢查(我在首都是alwais writtent)。 – wazaminator 2013-04-24 12:45:06

+0

@Kingalione請現在檢查小提琴。 – user2110167 2013-04-24 12:45:23

回答

1

沒有,id s的不可繼承。

列表項目雖然列表中包含。如果事件沒有被捕獲並且被列表項阻止傳播,它將通過bubble直到列表,然後到列表的父代,依此類推。

+1

如何防止它傳播? – user2110167 2013-04-24 12:46:13

+0

調用['stopPropagation'](https://developer.mozilla.org/en-US/docs/DOM/event .stopPropagation)。如果切換到使用['addEventListener'](https://developer.mo吉拉。org/en-US/docs/DOM/event)。 – Quentin 2013-04-24 12:48:00

+1

在我的情況下,如果兩個元素都附加到我猜測的同一個事件上,那麼孩子不會有任何附加事件。停止傳播,冒泡等等。從小提琴中,您能告訴我這件事是如何傳播的嗎? – user2110167 2013-04-24 12:53:16