javascript事件捕获和事件冒泡

一、什么是事件捕获和事件冒泡

微软提出了事件冒泡(event bubbling)的事件流,即事件从最内层的元素开始,一层层往上传播,直到document结束。与之相对应的网景提出了名为事件捕获(event capturing)的事件流,即事件从最外层的元素开始也就是从document开始一层层往下传递。

“DOM2级事件”规范要求应该从document对象开始传播,但是这些浏览器都是从window对象开始捕获事件的。

二、为什么用事件捕获和事件冒泡

事件捕获和事件冒泡的概念的提出是为了解决页面元素事件发生的顺序问题。

<div id="div1">

<div id="div2"></div>

</div>

 当div1和div2都绑定click事件的时候,我们需要知道两个div事件的触发的顺序,作出相应的处  理。

三、怎么用事件捕获和事件冒泡

1.在javascript中,使用addEventListener()来给元素绑定事件

EventTarget.addEventListener(type,listener,useCapture)

type:需要监听的事件类型

listener:事件触发之后执行的函数

useCapture:默认为false,表示使用事件冒泡,即div2先被点击;设置为true,表示使用事件捕获,即div1先被点击。

2.在jquery中,不支持事件捕获,仅仅支持事件冒泡

jquery提供了停止事件冒泡的方法:event.stopPropagation();可以阻止事件中其他对象的事件处理函数被执行。

jquery还提供了阻止默认行为的方法:event.preventDefault();例如:提交表单的时候,对表单进行前端验证,验证不通过的时候,阻止表单提交 ,就可以使用此方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 8,161评论 1 10
  • 背景知识 什么是事件?直观的说就是网页上发生的事情,大部分是指用户的鼠标动作和键盘动作,如点击、移动鼠标、按下某个...
    吧啦啦小汤圆阅读 5,867评论 2 15
  • 事件绑定的方式 给 DOM 元素绑定事件分为两大类:在 html 中直接绑定 和 在 JavaScript 中绑定...
    Bruce_zhuan阅读 4,655评论 0 6
  • 通过jQuery,您可以选取(查询,query)HTML元素,并对它们执行“操作”(actions)。 jQuer...
    枇杷树8824阅读 3,870评论 0 3
  • 深夜的房间里 黑暗中开起了一个无声无息的聚会 只有断断续续的鼾声 和那翻身时床的嘎吱声 为之伴奏 黑作为背景上演了...
    洛千雨阅读 1,410评论 0 0