JavaScript的事件

我认为的重点

  1. 事件,事件监听,事件处理函数,事件流的定义
  2. 事件流的冒泡和捕获阶段是什么?
  3. DOM 节点有多个事件处理程序,他们的执行顺序怎么肯定?搜索程序的顺序
  4. 事件处理函数内添加事件监听
  5. 阻止默认事件和阻止冒泡的代码
  6. 结合事件知识点写一个 demo

定义

对于一个经典的事件监听函数,明确一些概念函数

btn.addEventListener("click", function(){
  //这个函数就是事件处理函数
  console.log(1)
})
  • 事件 === 用户的动做 ===在上面的代码就是 "click"
  • 事件监听 === 上面的整个代码 === 事件 + 事件处理函数
  • 事件处理函数 === 在上面的代码就是console.log(1)
  • 事件流 === 事件在 DOM 节点树传播的顺序,能够是冒泡或者捕获

冒泡阶段和捕获阶段

  1. 冒泡和捕获阶段测试 demo : http://js.jirengu.com/tofisal...
  2. DOM

    未命名文件 (9).png

  3. 问题: 点击4区域,解释打印结果测试

    注意点:spa

    1. div3 有两个函数,注意执行顺序
    2. div3 以后有个×, 他的实现的代码是什么?
  4. 问题: 若是我点击3区域,打印什么?

    打印冒泡2222, 3 ,33333code

  5. 事件处理程序顺序测试demo: http://js.jirengu.com/qoyoben...

    点击 3 区域,解释打印内容事件

  6. 总结: 一个 DOM 结点事件处理程序的顺序:rem

    1. 先捕获后冒泡
    2. 哪一个代码在前面, 哪一个代码就先执行
    3. 通常状况下, 是先看1,若是1相同,再看2
    4. 可是当 DOM 结点(如 demo 的 div4 )以后没有 DOM 结点, 那个按照第2条规则处理

事件处理函数内添加事件监听

  1. 点击3区域, 解释打印内容get

  2. 改变需求: 点击3区域的时候, 只打印3, 第二次点击3区域的时候,打印3, 2io

  3. 总结:console

    • 当你给 DOM 节点的事件处理函数内添加了一个事件监听A, 那么事件监听A是立刻添加到 DOM 中(也就是说刚添加的事件监听A在第一次点击就能激活, 看第一个例子)
    • 若是你想让添加的事件监听A不是立刻添加到 DOM 中(也就是说刚添加的事件监听A在第二次点击才能激活)那么能够使用setTimeout解决. (看第二个例子)

dismissible propover

  1. 效果: http://js.jirengu.com/nanepev...
  2. 列出全部状况

    选区_110.png

  3. 注意点:

    • 何时用事件处理函数内添加事件监听?

      第二次与第一次的 DOM 结构函数不一样 + 第二次是在第一次的某种状况下(红圈)

相关文章
相关标签/搜索