我认为的重点
- 事件,事件监听,事件处理函数,事件流的定义
- 事件流的冒泡和捕获阶段是什么?
- DOM 节点有多个事件处理程序,他们的执行顺序怎么肯定?搜索
程序的顺序
- 事件处理函数内添加事件监听
- 阻止默认事件和阻止冒泡的代码
- 结合事件知识点写一个 demo
定义
对于一个经典的事件监听函数,明确一些概念函数
btn.addEventListener("click", function(){
//这个函数就是事件处理函数
console.log(1)
})
- 事件 === 用户的动做 ===在上面的代码就是 "click"
- 事件监听 === 上面的整个代码 === 事件 + 事件处理函数
- 事件处理函数 === 在上面的代码就是
console.log(1)
- 事件流 === 事件在 DOM 节点树传播的顺序,能够是冒泡或者捕获
冒泡阶段和捕获阶段
- 冒泡和捕获阶段测试 demo : http://js.jirengu.com/tofisal...
- DOM

-
问题: 点击4区域,解释打印结果测试
注意点:spa
- div3 有两个函数,注意执行顺序
- div3 以后有个×, 他的实现的代码是什么?
- 问题: 若是我点击3区域,打印什么?
打印冒泡2222, 3 ,33333
code
- 事件处理程序顺序测试demo: http://js.jirengu.com/qoyoben...
点击 3 区域,解释打印内容事件
-
总结: 一个 DOM 结点事件处理程序的顺序:rem
- 先捕获后冒泡
- 哪一个代码在前面, 哪一个代码就先执行
- 通常状况下, 是先看1,若是1相同,再看2
- 可是当 DOM 结点(如 demo 的 div4 )以后没有 DOM 结点, 那个按照第2条规则处理
事件处理函数内添加事件监听
-
点击3区域, 解释打印内容get
-
改变需求: 点击3区域的时候, 只打印3, 第二次点击3区域的时候,打印3, 2io
-
总结:console
- 当你给 DOM 节点的事件处理函数内添加了一个事件监听A, 那么事件监听A是立刻添加到 DOM 中(也就是说刚添加的事件监听A在第一次点击就能激活, 看第一个例子)
- 若是你想让添加的事件监听A不是立刻添加到 DOM 中(也就是说刚添加的事件监听A在第二次点击才能激活)那么能够使用setTimeout解决. (看第二个例子)
dismissible propover
- 效果: http://js.jirengu.com/nanepev...
- 列出全部状况

-
注意点: