美文网首页
DOM事件模型

DOM事件模型

作者: squall1744 | 来源:发表于2018-04-08 17:19 被阅读0次

onclick和addEventListener('click', function() {})


xxx.onclick = function() {}只能给元素绑定一个onclick事件

xxx.addEventListener('click', function() {})可以给添加多个click事件,每添加一个, 都会进入队列里, 然后依次执行, 可以用xxx.removeEventListener('click', function() {}) 取消click队列, 每种事件有各自不同的队列

我们可以设置一次事件监听

function f1() {
  console,log(1)
xxx.removeEventListener('click', f1)
}

xxx.addEventListener('click', f1)

当我们点击一次元素后, 此监听事件就被取消了

这两点对于其他事件同样适用

事件捕获和事件冒泡


当点击一个元素触发事件时. 事件会先从元素的最外层父元素一层一层进入到触发的元素, 然后在从触发元素一层一层返回到最外层父元素, 从最外层一层一层进入的阶段叫事件捕获阶段, 从最里层一层一层往外的阶段叫事件冒泡,

这里有一个模拟事件点击全过程的动画

我们这里利用事件冒泡写出一个点开浮层、关闭浮层的例子,来让大家更好的理解事件模型, 要求

  • 点击按钮弹出浮层
  • 点击别处关闭浮层
  • 点击浮层时,浮层不得关闭
  • 再次点击按钮,浮层消失

思路

  • 对button添加click事件, 通过点击button, 来切换浮层显示或者关闭
  • 给document设置监听click来关闭浮层, document是最上层的元素, 由于事件冒泡, 我们点击document的任意子元素, 都会冒泡到document, 触发document的click事件, 达到点击任意地方关闭浮层的效果

要点

  • 由于事件冒泡, 我们点击document的任意子元素都可以将点击事件冒泡到document, 我们通过给document添加click事件来监听来自他所有子元素的click事件, 这样就可以达到点击屏幕任何地方都可以关闭浮层的效果

  • 利用stopPropagation()来阻止事件冒泡, 这样我们就可以通过对浮层的上一层父元素应用stopPropagation()来阻止浮层的click事件传递到document, 这样我们点击浮层的时候, 浮层就不会关闭了

  • 事件冒泡发生在事件绑定的函数运行完之后, 这就意味着如果我们在点击button时, 在button绑定的事件函数运行完之后, 才会发生事件冒泡, 这也就意味着, 我们如果在button绑定的事件函数中对document设置监听click事件, 那么由于事件冒泡, 这个事件仍然会被触发, 所以如果我们要在button点击事件中监听document, 我们可以通过异步的方法, 在事件冒泡完成后, 再设置document的监听, 这里可以用setTImeout来异步设置document监听

demo

相关文章

  • JavaScript--模型、闭包、链

    (1)事件模型JavaScript中有两种时间模型:DOM0,DOM2 DOM0级事件模型是早期的事件模型,所有的...

  • jQuery事件

    第1章 DOM事件模型 DOM 0级 事件模型 input.onclick = function() { ... ...

  • jQuery--事件处理

    jQuery--事件处理 一、事件模型 1.浏览器事件模型①DOM0级事件模型:只支持一个DOM事件处理函数• ...

  • DOM的事件模型中addEventListener的第三个参数

    DOM的事件模型这里只讨论主流浏览器的DOM标准事件处理模型 什么是DOM事件模型 本人在初次接触时,大致学习了D...

  • 前端面试题(3)——DOM事件类

    基本概念:DOM事件的级别 DOM事件模型:事件冒泡事件捕获 DOM事件流 描述DOM事件捕获的具体流程 Even...

  • jQuery--事件处理

    一、事件模型 1.浏览器事件模型 ①DOM0级事件模型:只支持一个DOM事件处理函数• • input.onc...

  • Dom事件

    Dom事件的级别Dom事件模型(冒泡+捕获)Dom事件流 http://www.cnblogs.com/staro...

  • Dom事件

    基本概念 Dom事件级别 Dom事件模型 Dom事件流 描述Dom事件捕获的具体流程 Event对象的常见应用 自...

  • 3-6 DOM事件

    问题 DOM 事件的级别 DOM 事件模型(就是捕获和冒泡儿) DOM 事件流 描述DOM事件捕获的具体流程 Ev...

  • DOM事件类

    基本概念:DOM事件的级别 DOM事件模型 DOM事件流 描述DOM事件捕获的具体流 Event对象的常见应用 自...

网友评论

      本文标题:DOM事件模型

      本文链接:https://www.haomeiwen.com/subject/xuuphftx.html