22.DOM事件类

一、事件级别

//dom0
element.onclick = function(){}

//dom2
element.addEventListener('click',function(){},false)

//dom3
element.addEventListener('keyup',function(){},false)

二、事件模型

捕获、冒泡


三、事件流

事件流.png

事件通过捕获到达目标元素,之后事件通过冒泡再上传到window对象。


四、DOM事件捕获的具体流程

window =>document =>html =>body =>... =>目标元素

事件捕获的具体流程.png

ps:js获取document节点document.documentElement


五、Event对象常见应用

event.preventDefault()//阻止默认行为,如a链接跳转

event.stopPropagation()//阻止冒泡

event.stopImmediatePropagation()//执行完当前事件处理程序之后,停止当前节点以及所有后续节点的事件处理程序的运行

event.currentTarget//绑定事件的元素如:ul
event.target//触发的元素如:li
//事件委托
<ul id="ul1">
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

var ul1 = document.getElementById('ul1');
 ul1.addEventListener('click',function (e) {
    console.log(e.target)  //<li>2</li>
    console.log(e.currentTarget)  //<ul id='ul1'></ul>
})

六、自定义事件

<button id='ev'>ev button</button>

var ev = document.getElementById("ev");
    var eve = new Event('custome')
    ev.addEventListener('custome', function () {
        console.log('custome')
    })
    ev.dispatchEvent(eve);

CustomEvent 可以创建一个更高度自定义事件,还可以附带一些数据,具体用法如下:

var myEvent = new CustomEvent(eventname, options);

其中 options 可以是:

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

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,581评论 1 11
  • 第13章 事件 1. 事件流 事件流描述的是从页面中接收事件的顺序。 (1) 事件冒泡 IE 的事件流叫做事件冒泡...
    yinxmm阅读 988评论 0 17
  • 事件是什么,可以用来做什么,什么时候用到它? 事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。JavaScr...
    茂茂爱吃鱼阅读 1,561评论 0 16
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,288评论 0 21
  • 事件是一种异步编程的实现方式,本质上是程序各个组成部分之间的通信。DOM支持大量的事件,本节介绍DOM的事件编程。...
    许先生__阅读 980评论 0 3