用jQuery实现listview的功能

<html>
<head>

<style>
body 
     {
       font-family:Fantasy;
     }
ul.title 
     {
      color:black;
      list-style:disc inside;
      font-weight:600;
      padding:8px 8px 8px 8px;
      cursor:hand;
     }
ul.chapter 
     {
      color:black;
      list-style:square inside;
      font-weight:600;
      padding:8px 8px 8px 8px;
      cursor:hand;
     }
</style>
<script type="text/javascript" src="http://www.cnblogs.com/resource/jquery.js"></script>
<script type="text/javascript">
$(function(){
          $("li.chapter").hide();
          $("li").each(function(){ $(this).mouseover(function(){$(this).css("color","red"); return false;});});
          $("li").each(function(){ $(this).mouseout(function(){$(this).css("color","black"); return false;});});
          $("li.title").each(function(){ $(this).click(function(){mclick($(this))});});
          $("li.chapter").each(function(){ $(this).click(function(event){alert("点击的是:"+$(this).text());  event.stopPropagation();});});
});

function mclick(e)
{
   e.find("li").toggle();
}
</script>
</head>

<body>
<ul class="title">

<li class="title" >绪论<br/>

<ul class="chapter">
<li class="chapter" >第一节</li>
<li class="chapter" >第二节</li>
</ul>
</li>

<li class="title" >第一章<br/>

<ul class="chapter">
<li class="chapter" >第一节</li>
<li class="chapter" >第二节</li>
<li class="chapter" >第三节</li>
</ul>
</li>

<li class="title">第二章<br/>

<ul class="chapter">
<li class="chapter" >第一节</li>
<li class="chapter" >第二节</li>
<li class="chapter" >第三节</li>
<li class="chapter" >第四节</li>
</ul>
</li>

<li class="title">第三章<br/>

<ul class="chapter">
<li class="chapter" >第一节</li>
<li class="chapter" >第二节</li>
<li class="chapter" >第三节</li>
<li class="chapter" >第四节</li>
<li class="chapter" >第五节</li>
</ul>
</li>

</ul>
</body>
</html>



     遇到的问题就是如何可以阻止事件冒泡,当鼠标移动到class = chapter标签上的时候,本应只有该标签下的文字变红,但是问题就来了,他对应的class = title标签内的文字也变红了,因为就是在于当我们鼠标移动到chapter上他就会产生一个事件,然后出发它本身的mouseover事件,但是这个事件并没有完,他还会继续向上冒泡,这样他的父节点title也会接受到这个事件,从而也会出发他的点击事件,这样他的字体也会变色。所以问题的关键就在于如何组织事件冒泡。

  我在网上查到了很多种方法,并选择了其中的一种event.stopPropagation(),当事件遇到他之后就会停止向父级冒泡,这样父节点的文字也就怒会收到影响了

posted @ 2013-04-09 09:41  傍観者  阅读(3575)  评论(0编辑  收藏  举报