在javascript中会遇到事件冒泡传递的问题,现在对这的理解有些混,一个事件的冒泡的范围是多大呢?为什么有的事件好像是会冒泡的有的好像不会,举个例子吧,在一个<td>中有一个<input>,现在在<input>中注册了一个click事件,那么这个这个事件是不是一直向外传递呢?我想如果一直向外传递的话,那么如果在一个元素上我们注册了一个mouseover事件,那么是不我们在进入了这个页面以后就触发了事件?如果一直向外传递的话应该是这样的吧,前提不把这个冒泡给屏壁掉?在现实的应用中,怎么感觉有时应该有冒泡传递的,但是又没有,是对这个冒泡不理解吧,望高手指导!

解决方案 »

  1.   

    冒泡的看看这个吧:http://www.blueidea.com/tech/web/2007/4628.asp
      

  2.   

    input.onclick还是会沿着DOM层次往上传递onclick事件,如下:
    <table>
        <tr>
            <td  onclick='alert(this.tagName)'><input onclick='alert(this.tagName)'></td>
        </tr>
    </table>
    某元素上的mouseover事件,只有当鼠标在该元素上才会触发,触发后mouseover事件才沿着该元素的DOM层次向上传递。
      

  3.   

    不明白的,再看看:
    http://blog.csdn.net/webflash/archive/2009/08/23/4475902.aspx
    其实这些资料,你G一下就可以了
      

  4.   

    这个如果你会一点flex的话市非常容易理解的,在flex里事件是整个框架的核心
    结合你提的问题,例子如下:
    <div id="div1"> 
      <div id="div2"> 
       <div id="div3">   
       </div>  
      </div>  
    </div>js:document.getElementById("div3").attachEvent("onclick",onclickhandle);我们都知道单击div3时会执行onclickhandle方法,其实这个事件会执行这样的过程
    div3->div2->div1
    这个就是你说的冒泡,在html中可以用这个方法防止继续冒泡cancelBubble