JavaScript事件模型

原文在 http://www.cnblogs.com/1wen/p/5640997.html我增加上我的例子 并且进行了理解JavaScript事件模型

下面的代码是我写的,上面的部分知识总结不是我写的,知识为了更好的理解这个点,写了个例子而已,针对于事件冒泡


JavaScript事件模型

  在各种浏览器中存在三种事件模型: 原始事件模型 , DOM2事件模型 , IE事件模型。

其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持.

  原始事件模型:

 在原始事件模型中(也有说DOM0级),事件发生后没有传播的概念,没有事件流。事件发生,处理,结束,就这么简单。

监听函数只是元素的一个属性值,通过指定元素的属性值来绑定监听器。书写方式有两种:

    (1)   HTML代码中指定属性值:

    (2)   在js代码中指定属性值:document.getElementsByTagName(‘input’)[0].onclick = func

    优点:所有浏览器都兼容

    缺点:

      1.逻辑与显示没有分离

      2.相同事件的监听函数只能绑定一个,后绑定的会覆盖掉前面的

      3.无法通过事件的冒泡、委托等机制。

DOM2事件模型

    此模型是W3C制定的标准模型。W3C制定的事件模型中,一次事件的发生包含三个过程:

    (1)事件捕获阶段。事件被从document一直向下传播到目标元素,

                            在这过程中依次检查经过的节点是否注册了该事件的监听函数,若有则执行。

    (2)事件处理阶段。事件到达目标元素,执行目标元素的事件处理函数.

    (3)事件冒泡阶段。事件从目标元素上升一直到达document,同样依次检查经过的节点是否注册了该事件的监听函数,

有则执行。

    所有的事件类型都会经历 "事件捕获阶段" 但是只有部分事件会经历 "事件冒泡阶段" 阶段,

例如submit事件就不会被冒泡。 

<body>
FirstController.jsp
如果 li和span 都加上 onclick 的话
那么点击span 会向上冒泡,li 的点击事件也会触发
如果只有span有onclick事件的话,那么只有 spanclick 会触发<pre style="background-color: rgb(255, 255, 255); font-family: 宋体; font-size: 9pt;">
实例代码

<li οnclick="liclick()">

  <span οnclick="spanclick()">事件冒泡测试</span>
</li>
<script type="application/javascript">
  function spanclick(){
    alert(" wo shi span");
  }

  function liclick(){
    alert(" wo shi li");
  }

</script>
</body>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值