0

我有一个 html 代码,我在其中使用无序列表来显示目录结构。在单击 li 标签时,我调用一个 js 函数(比如 changecss()),在其中我阻止子 lis 的显示以使它们可见。但是在单击子 lis 时。如果我点击子 li,他们也会调用相同的函数 changecss() 。他们没有附带 onclick 事件,但是当我单击这些 li 时,他们仍然调用该函数。

这是代码:

    第一类科目1
  • 额外类 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 是: function 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/

多谢你们

4

2 回答 2

1

不,ids 不是继承的。

列表项虽然包含在列表中。如果事件没有被列表项捕获并阻止传播,它将冒泡到列表,然后到列表的父级,依此类推。

于 2013-04-24T12:43:40.307 回答
0

在事件传播的情况下它的正常行为。

请阅读更多关于它的信息 http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow

于 2013-04-24T12:46:42.100 回答