JavaScript Event学习第五章 高级事件注册模型

yizhihongxing

下面我将详细讲解“JavaScript Event学习第五章 高级事件注册模型”的完整攻略。

前言

在Javascript中,事件注册是非常重要的一个部分,它可以让我们通过操作DOM元素,来响应用户的各种行为,比如点击、移动、滚动等。而高级事件注册模型则为我们提供了更为灵活的事件注册方式,可以灵活的控制事件的冒泡和捕获。下面是该模型的具体使用方法。

高级事件注册模型

在DOM标准中,事件传播包含两个阶段,分别是捕获阶段冒泡阶段。而在高级事件注册模型中,我们可以通过addEventListener()函数,来控制事件的响应阶段。该函数的使用方法如下:

target.addEventListener(type, listener, useCapture);

其中,target表示要绑定事件的DOM元素,type表示要绑定的事件名称,listener表示对应的事件处理函数,useCapture表示是否在捕获阶段触发事件,如果为true则开启,反之则关闭。

比如,我们可以对一个按钮进行如下绑定:

<button id="myBtn">点我一下</button>
let btn = document.getElementById("myBtn");
btn.addEventListener("click", function(){
    console.log("Hello world!");
}, false);

这样一来,在点击按钮之后,控制台上就会输出"Hello world!"。

示例说明

下面我们通过两个示例来说明高级事件注册模型的具体运用。

示例一:阻止事件冒泡

有时候,我们需要在一个容器内绑定多个元素,而每个元素都有对应的事件响应函数,这个时候就需要注意事件冒泡的问题,否则可能出现冲突、误触等问题。

比如,我们有如下的HTML代码:

<div id="container">
    <button id="btn">按钮</button>
    <a href="https://www.baidu.com">百度一下</a>
</div>

我们需要在按钮和超链接上绑定事件,实现点击会分别输出“点击按钮”和“点击超链接”

let container = document.getElementById("container");
let btn = document.getElementById("btn");
let link = document.getElementsByTagName("a")[0];

container.addEventListener("click", function(){
    console.log("点击容器");
}, false);

btn.addEventListener("click", function(event){
    event.stopPropagation(); // 阻止事件冒泡
    console.log("点击按钮");
}, false);

link.addEventListener("click", function(event){
    event.stopPropagation(); // 阻止事件冒泡
    console.log("点击超链接");
}, false);

在这个例子中,我们在按钮和超链接上通过event.stopPropagation()来阻止事件冒泡,确保只会输出各自的消息。

示例二:事件委托

在有多个元素时,我们可能再也不需要为每个元素单独绑定事件处理函数了——这就是事件委托的特殊方法。

事件委托是指将事件处理程序添加到父级元素而不是将它们添加到每个子元素中。事件委托利用事件冒泡将与事件相关的信息传播到父元素。

比如,我们有如下的HTML代码:

<ul id="menu">
    <li>菜单1</li>
    <li>菜单2</li>
    <li>菜单3</li>
</ul>

我们需要在每个菜单上绑定事件,实现点击会输出“点击菜单N”

let menu = document.getElementById("menu");

menu.addEventListener("click", function(event){
    let target = event.target;
    if(target.tagName.toLowerCase() === "li"){
        console.log(`点击菜单${target.innerText}`);
    }
}, false);

在这个例子中,我们通过event.target来获取事件的触发元素,判断其tagName是否为li,确保只会输出菜单的消息。

结论

通过高级事件注册模型,我们可以更加灵活的控制事件响应的捕获和冒泡流程,从而更好的处理事件冲突、误触等问题。同时,事件委托也能极大的降低事件处理程序的数量,提高代码效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript Event学习第五章 高级事件注册模型 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 详解JavaScript 事件流

    请听我详细讲解“详解JavaScript 事件流”的完整攻略。 什么是JavaScript事件流 JavaScript事件流指的是介绍HTML中事件触发的顺序。HTML通常是从外部开始的,并从外部向下(冒泡阶段)移动到最下方元素,然后在内部从下到上执行(捕获阶段)。事件以冒泡的形式进行,这意味着在激活事件后,事件将从内部向外冒泡。例如,如果你点击一个按钮,事…

    JavaScript 2023年6月10日
    00
  • Three.js实现雪糕地球的使用示例详解

    首先,为了使用Three.js实现雪糕地球,我们需要在网站中引入Three.js库,可以通过以下代码在HTML文件中引入: <script src="./js/three.min.js"></script> 为了呈现一个球形地球,我们使用Three.js中的球体(SphereGeometry)并将其放置在场景(Sc…

    JavaScript 2023年6月11日
    00
  • vue打开新窗口并实现传参的图文实例

    下面是“vue打开新窗口并实现传参的图文实例”的完整攻略。 1. 前置知识 在学习“vue打开新窗口并实现传参”的过程中,需要掌握以下前置知识: Vue.js基础知识 HTML基础知识 JavaScript基础知识 2. 实现步骤 2.1 打开新窗口 打开新窗口有多种方式,这里使用window.open()方法来实现。 window.open(url, ‘_…

    JavaScript 2023年6月11日
    00
  • JS实现字符串去重及数组去重的方法示例

    当我们需要处理字符串或者数组数据的时候,有时候我们需要去重处理。下面是JS实现字符串去重及数组去重的方法: 字符串去重 JS实现字符串去重有以下方法: 方法一:Array.from + Set 我们可以先把字符串转换成数组,然后使用ES6新增的Set数据结构去重,最后在将其转换为字符串。 const str = "aabbcc"; con…

    JavaScript 2023年5月27日
    00
  • 原生javascript实现的一个简单动画效果

    首先,需要明确什么是动画效果:动画是指将元素从一种状态平滑地转换到另一种状态的过程。在 Web 开发中,我们通常使用动画来提升用户体验,比如当用户鼠标移到一个按钮上时,按钮的背景色逐渐变亮。 原生JavaScript能够自如地控制DOM元素,因此我们可以使用它实现简单的动画效果。具体步骤如下: 设置初始状态和目标状态 首先需要定义元素的初始状态和目标状态。比…

    JavaScript 2023年6月10日
    00
  • js动态获取时间的方法分析

    让我为你详细讲解“js动态获取时间的方法分析”的完整攻略。 1. 时间获取的概述 在JavaScript中,获取时间的方法有很多,常见的有Date对象、moment.js等。其中,Date对象是最常用的时间获取方式,它可以获取当前时间或指定日期的时间,并对时间进行格式化处理。 2. 使用Date对象获取时间 Date对象获取时间非常简单,只需实例化该对象,即…

    JavaScript 2023年5月27日
    00
  • JS实现日期时间动态显示的方法

    实现日期时间动态显示的方法可以使用JavaScript代码来实现,JavaScript 提供了一些可以使用的函数和对象,我们可以通过这些函数和对象来完成这一过程。 步骤一:获取日期时间对象 在JavaScript中获取日期时间对象可以使用内置对象 Date 。Date 对象同时包含了日期和时间,可以通过这个对象获取当前的日期时间。 var now = new…

    JavaScript 2023年5月27日
    00
  • js替换字符串中所有指定的字符(实现代码)

    要替换 JavaScript 字符串中的所有指定字符,可以使用字符串的 replace() 函数。replace() 函数可以接受两个参数,第一个参数是需要替换的字符或正则表达式,第二个参数是替换为的字符或函数。为了替换所有指定的字符,我们需要使用正则表达式来匹配所有出现的目标字符。 以下是实现代码: var str = "Hello, World…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部