iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Javascript 中怎么实现事件流和事件委托
  • 750
分享到

Javascript 中怎么实现事件流和事件委托

2024-04-02 19:04:59 750人浏览 独家记忆
摘要

今天就跟大家聊聊有关javascript 中怎么实现事件流和事件委托,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。javascript 事件流和事件

今天就跟大家聊聊有关javascript 中怎么实现事件流和事件委托,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

javascript 事件流和事件委托

javascript和html之间的交互是通过事件实现的。

事件就是用户或浏览器自身执行的某种动作,比如点击、加载,鼠标移入移出等等。

DOM事件流

DOM(文档对象模型)结构是一个树形结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根节点之间按特定的顺序传播,路径所经过的节点都会收到该事件,这个传播过程可称为DOM事件流。

事件流描述的是从页面中接收事件的顺序。

事件冒泡:IE的事件流叫 事件冒泡,即事件开始时由最具体的元素接收,然后逐级向上传播到较为不具体的节点。自下而上。

事件捕获:是不太具体的节点先接收到事件,而最具体的节点应该最后接收到事件。自上而下。

DOM事件流:包括三个阶段:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 事件捕获阶段:该阶段的主要作用是捕获截取事件

  3. 处于目标阶段:一般地,该阶段具有双重范围,即捕获阶段的结束,冒泡阶段的开始;

  4. 事件冒泡阶段:主要作用是将目标元素绑定事件执行的结果返回给浏览器,处理不同浏览器之间的差异,主要在该阶段完成

Javascript 中怎么实现事件流和事件委托

DOM事件流

事件对象 

在触发DOM上的某个事件时,会产生一个事件对象event,该对象包含所有与事件有关的信息。

var btn = document.getElementById("juejin") btn.onclick = function(event){   console.log(event)  }
  • 常用属性:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. target 事件的目标

  3. currentTarget 绑定事件的元素,与 'this' 的指向相同

  4. stopPropagation() 取消事件的进一步捕获或冒泡。如果bubbles为true,则可以使用这个方法

  5. stopImmediatePropagation() 取消事件的进一步捕获或冒泡,同时阻止任何事件处理程序被调用(DOM3级事件中新增)

  6. preventDefault() 取消事件的默认行为,比如点击链接跳转。如果 cancelable 是 true,则可以使用这个方法

  7. type 被触发的事件类型

  8. eventPhase 调用事件处理程序的阶段:0表示这个时间没有事件正在被处理,1表示捕获阶段,2表示“处于目标”,3表示冒泡阶段

document.body.onclick = function(event){     alert(event.currentTarget === document.body); //true     alert(this === document.body); //true     alert(event.target === document.getElementById("myBtn")); //true };

事件类型

1.UI (User Interface) 事件,当用户与页面上的元素交互时触发

  • load、unload、error、select、resize、scroll

2.焦点事件,在页面获得或失去焦点时触发

  • blur、focusout 失去焦点

  • focus、focusin 获得焦点

3.鼠标事件,用户通过鼠标在页面执行操作时触发

  • click、dbclick、mousedown、mouseup

  • mouseenter、mouserleave

  • mousemove

  • mouseout、mouseover

点击和双击事件触发的顺序如下

  • mousedown

  • mouseup

  • click

  • mousedown

  • mouseup

  • dbclick

4.滚轮事件,当使用鼠标滚轮操作时触发

  • mousewheel

5.文本事件,在文档中输入文本时触发

  • textInput 当用户在可编辑区域中输入字符时,就会触发这个事件

6.键盘事件,当用户通过键盘在页面上执行操作时触发

  • keydown 按下键盘任意键时触发,不松开,则一直触发

  • keypress 按下键盘上的字符键时触发,不松开,则一直触发

  • Keyup 用户释放键盘上的建时触发

7.HTML5事件

  • contextmenu 事件:单价鼠标右键可以调出上下文菜单

  • beforeunload 事件:在浏览器卸载页面之前触发

  • DOMContentLoad 事件:在形成完整的DOM树之后就会触发。

  • readystatechange 事件:提供与文档加载状态有关的信息

  • pageshow和pagehide 事件:页面显示和隐藏时触发 ?MDN传送门

  • hashchange 事件 : hash改变时触发

事件委托

事件委托是为了解决事件处理程序过多造成的内存和性能问题。那么什么是事件委托呢?

就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。

有什么作用?

  • 支持为同一个DOM元素注册多个同类型事件

  • 可将事件分为事件捕获和事件冒泡

用addEventListener(type,listener,useCapture)实现

  • type: 必须,String类型,事件类型

  • listener: 必须,函数体或者js方法

  • useCapture: 可选,boolean类型。指定事件是否发生在捕获阶段。默认为false,事件发生在冒泡阶段

<div id="div1"></div>  window.onload = function(){     let div1 = document.getElementById('div1');     div1.addEventListener('click',function(){         console.log('打印第一次')     })     div1.addEventListener('click',function(){         console.log('打印第二次')     }) }

事件委托的优点

  • 可以大量节省内存占用,减少事件注册

  • 可以实现当新增子对象时无需再次对其绑定(动态绑定事件)

使用事件委托注意事项

使用“事件委托”时,并不是说把事件委托给的元素越靠近顶层就越好。

事件冒泡的过程也需要耗时,越靠近顶层,事件的”事件传播链”越长,也就越耗时。

如果DOM嵌套结构很深,事件冒泡通过大量祖先元素会导致性能损失。

看完上述内容,你们对Javascript 中怎么实现事件流和事件委托有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网JavaScript频道,感谢大家的支持。

--结束END--

本文标题: Javascript 中怎么实现事件流和事件委托

本文链接: https://www.lsjlt.com/news/69958.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Javascript 中怎么实现事件流和事件委托
    今天就跟大家聊聊有关Javascript 中怎么实现事件流和事件委托,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。javascript 事件流和事件...
    99+
    2024-04-02
  • JavaScript中怎么实现事件委托
    JavaScript中怎么实现事件委托,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。事件是对象发送的消息,以发信号通知操作的发生。委托是可...
    99+
    2024-04-02
  • 怎么在JavaScript中实现事件委托
    怎么在JavaScript中实现事件委托?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。事件委托利用事件冒泡,指定一个事件处理程序,管理一系列的所有事件事件委托利用DOM元素...
    99+
    2023-06-15
  • JavaScript中怎么实现事件代理和委托
    JavaScript中怎么实现事件代理和委托,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。JavaScript事件代理首先介绍...
    99+
    2024-04-02
  • jQuery中怎么实现事件委托
    jQuery中怎么实现事件委托,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。javascript的事件模型,采用"冒...
    99+
    2024-04-02
  • javascript事件冒泡,事件捕获和事件委托详解
    1、事件冒泡:在javascript事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止。并不是所有的事件...
    99+
    2024-04-02
  • js中的事件委托怎么实现
    在JavaScript中,可以通过事件委托来简化事件处理程序的绑定和管理。事件委托是将事件处理程序绑定到其父元素,然后通过冒泡机制来...
    99+
    2023-09-29
    js
  • 什么是javascript事件委托
    本篇文章为大家展示了什么是javascript事件委托,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在javascript中,事件委托就是利用冒泡的原理,将事件加到父元素或祖先元素上,触发执行效果。...
    99+
    2023-06-14
  • JavaScript事件委托原理
    目录一、什么是事件委托二、事件委托的原理三、事件委托的作用一、什么是事件委托 事件委托也称为事件代理。就是利用事件冒泡,把子元素的事件都绑定到父元素上。如果子元素阻止了事件冒泡,那么...
    99+
    2024-04-02
  • js如何实现事件委托和事件代理
    这篇文章给大家分享的是有关js如何实现事件委托和事件代理的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是事件委托/事件代理  利用事件的冒泡传播机制(触发当前元素的某一个行为...
    99+
    2024-04-02
  • js事件流、事件委托与事件阶段实例详解
    目录前言1、事件流2、事件处理程序3、事件对象4、跨浏览器事件处理5、事件委托总结前言 JavaScript 与 HTML 的交互是通过事件实现的,事件代表文档或浏览器窗口中某个有意...
    99+
    2024-04-02
  • C#中的委托和事件
    目录一、委托1、什么是委托1.1 定义委托1.2 声明并实例化委托1.3 委托实例的调用2、委托类型和委托实例2、多种途径实例化委托3、链式委托总结二、事件1、什么是事件2、如何声明...
    99+
    2024-04-02
  • C#中怎么使用委托和事件
    在 C# 中,委托和事件是一种常用的机制,用于实现事件驱动的编程模型。委托是一种类型,用于存储对方法的引用,而事件是委托的一种特殊用...
    99+
    2024-03-06
    C#
  • JS中如何实现事件委托
    这篇文章主要介绍了JS中如何实现事件委托,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。事件委托(也叫事件代理),其实这个问题也简单,要想弄明...
    99+
    2024-04-02
  • VB.NET下如何实现事件和委托
    这篇文章给大家分享的是有关VB.NET下如何实现事件和委托的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。委托是可用于调用其他对象方法的对象。它们有时被称为类型安全函数指针,因为它们与其他编程语言中所使用的函数指针...
    99+
    2023-06-17
  • JavaScript 事件委托——掌控前端事件流的可行之道
    事件委托的优点 事件委托的主要优点包括: 简化代码:通过将事件处理程序附加到父元素,我们可以避免为每个子元素分别添加事件处理程序,从而简化代码。 提高性能:通过将事件处理程序附加到父元素,可以减少浏览器需要触发的事件处理程序的数量,从而...
    99+
    2024-02-06
    事件委托的基本原理 事件委托的基本原理是:将事件处理程序附加到父元素 而不是子元素。当子元素触发事件时 该事件将向上冒泡到父元素 然后父元素的事件处理程序就会被触发。这意味着我们可以通过监听父元素的
  • 如何理解javascript事件委托
    这篇文章主要介绍“如何理解javascript事件委托”,在日常操作中,相信很多人在如何理解javascript事件委托问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解...
    99+
    2024-04-02
  • C#委托和事件怎么理解
    这篇文章主要介绍“C#委托和事件怎么理解”,在日常操作中,相信很多人在C#委托和事件怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#委托和事件怎么理解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-17
  • winform事件和委托怎么查看
    要查看WinForm事件和委托,你可以使用以下方法:1. 使用代码编辑器的自动完成功能:在编写WinForm应用程序时,你可以使用代...
    99+
    2023-09-08
    winform
  • JavaScript事件委托原理是什么
    JavaScript事件委托原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是事件委托事件委托也称为事件代理。就是利用事件冒泡,把子元素的事件都绑定到父元素...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作