当前位置: 首页 > news >正文

湛江制作网站公司/微信指数查询入口

湛江制作网站公司,微信指数查询入口,常德做网站报价,网站建设公司如何发展每天一个前端面试题之 DOM事件流 一、DOM事件流是什么? 首先明确一点,javascript和HTML的交互式通是事件完成。事件就是文档或浏览器窗口发生的一些特定的交互瞬间,事件流描述的是事件接收传播的过程、 二、DOM事件流的三个阶段 1.事件捕…

每天一个前端面试题之 DOM事件流

一、DOM事件流是什么?

首先明确一点,javascript和HTML的交互式通是事件完成。事件就是文档或浏览器窗口发生的一些特定的交互瞬间,事件流描述的是事件接收传播的过程、

二、DOM事件流的三个阶段

1.事件捕获阶段

事件捕获的思想是不太具体的DOM节点先先接收到事件,而最具体的节点应该最后接收到事件。事件捕获的用意在于:事件到达预定的节点之前就捕获它。

2.当前目标阶段

当前的目标节点正在处理事件的阶段。

3.事件冒泡

事件冒泡的思想是由最具体的元素(嵌套层次最深的那个DOM节点)接收,然后逐级向上传播到较为不具体的DOM节点。

有些事件是没有事件冒泡的,比如onblur,onfocus,onmouseenter,onmouseleave

阻止事件冒泡的方法:event.stopPropagation()
IE6、7、8使用 event.cancleBubble=true;

在addEventListener中还可以使用event.stopImmediatePropagation(),阻止事件冒泡并阻止该元素上同事件类型的监听器被触发。

下面图片有助于我们更好的理解DOM事件流的三个阶段。
图片来源:https://my.oschina.net/sevenhdu/blog/332014
在这里插入图片描述

三、事件委托

事件委托的依据是事件冒泡。
主要原理为:不给每个子节点单独设置事件监听器,而是将事件监听器设置在其父节点上。
适合用事件委托的事件:click,mousedown,mouseup,keydown,keyup,keypress。

四、例子

下面有一个有趣的例子,自己写一写代码分析一下会更清晰。
从外到内分别是盒子爷爷,盒子爸爸和盒子小明。
在这里插入图片描述

    son.addEventListener("click", function (event) {console.log("小明");}, true);father.addEventListener("click", function (event) {console.log("爸爸");}, true);grantfather.addEventListener("click", function (event) {console.log("爷爷1");}, true);grantfather.addEventListener("click", function (event) {console.log("爷爷2");});grantfather.addEventListener("click", function (event) {console.log("爷爷3"); event.stopImmediatePropagation();//阻止事件冒泡并阻止该元素上同事件类型的监听器被触发   }, true);grantfather.addEventListener("click", function (event) {console.log("爷爷4");}, true);

点击小明,输出 爷爷1, 爷爷3。
分析:son.addEventListener的第三个属性设置为true,表示事件捕获,是由上到下的,所以先输出爷爷1,再输出爷爷3,然后爷爷3阻止了事件冒泡和该元素上的同类型事件监听器,所以到此就结束了。

点击爸爸,和点击小明的结果是一样的。

点击爷爷,输出 爷爷1, 爷爷3。分析也同上。

如果去掉event.stopImmediatePropagation();

点击小明,输出 爷爷1, 爷爷3,爷爷4,爸爸,小明,爷爷2.
因为爷爷2是在事件冒泡阶段,所以最后输出。

点击其他的也可以同理分析。

五、事件委托的优缺点

优点:1. 可以大量节省内存占用,减少事件注册。比如ul上代理所有li的click事件就很不错。
2. .可以实现当新增子对象时,无需再对其进行事件绑定,对于动态内容部分尤为合适
缺点:事件代理的常用应用应该仅限于上述需求,如果把所有事件都用事件代理,可能会出现事件误判。即本不该被触发的事件被绑定上了事件。

http://www.lbrq.cn/news/1310023.html

相关文章:

  • 做网站什么系统简单/短期的技能培训有哪些
  • 松桃和兴建设公司网站/360排名检测
  • 做网站的需求调研/怎样建立一个网站
  • 做金馆长网站网站/seo刷排名工具
  • python 如何做网站/百度搜图入口
  • 乌托邦网站建设/济南网站优化排名
  • 世界网站流量排名/最近五天的新闻大事
  • 自己做网站到哪里去接广告/电子商务网站设计方案
  • 辽宁省企业信息系统/seo关键词排名优化联系方式
  • 淮安市政府门户网站建设的调查报告/小红书推广方式
  • 做网站ps能用美图秀秀么/双11销量数据
  • 宁波网站建设制作价格/知名网络推广
  • 做企业网站需要买什么资料/发布会直播平台
  • 南京快速建站公司/semir是什么品牌
  • 每天做任务得钱的网站/东莞百度搜索优化
  • 哪些网站可以兼职做设计/跟我学seo
  • 怎么做跟P站一样的网站/uc浏览网页版进入
  • 卖护肤在哪个网站做宣传好/网站收录查询方法
  • 网站域名注册的相关证书证明文件/seo网站介绍
  • 网络营销公司都做什么的/长沙网站seo优化排名
  • 重庆小程序开发/360优化大师官方下载
  • win10做的网站其他电脑访问不了/知乎营销平台
  • 做网站淄博/35个成功的市场营销策划案例
  • 深圳规模较大的网站建设公司/百度网站关键词排名查询
  • 个性化定制服务的网站有哪些/百度官网平台
  • 手机网站开发看什么书/网络推广怎么做
  • 网站现状如何分析/晚上必备免费软件大全苹果
  • 一个论坛网站应该怎么做/中小企业管理培训课程
  • 云南省建设厅网站查询/优化关键词排名公司
  • 梅州市网站制作/培训学校怎么招生
  • 虚拟化测试工具Parasoft Virtualize如何为汽车企业提供仿真测试?
  • arping(ARP协议网络测试工具)
  • 使用YOLOv11实现水果类别检测:从数据到模型训练的全过程
  • rustdesk远控电脑替代todesk,平替向日葵等软件
  • MybatisPlus由浅入深
  • 【PTA数据结构 | C语言版】根据前序序列重构二叉树