原生js监听当前元素之外的点击事件

监听当前元素之外的点击事件

  • 一、具体场景
  • 二、具体实现
  • 三、完整代码

一、具体场景

当我们需要实现点击其他位置关闭弹窗的时候,就需要监听当前元素之外的点击事件。

二、具体实现

实现思路:监听整个dom的点击事件,判断当前元素是否包含点击事件的触发元素即可。
核心代码:

 const current = document.getElementById('current') // 当前元素document.addEventListener('click', (e) => {console.log(current.contains(e.target)) // 判断当前元素是否包含触发点击事件的元素,如果当前元素有多个,用 || 来判断即可})

三、完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.box {width: 100px;height: 80px;border: 1px solid #000;}.current {width: 100%;height: 60px;background: #9A6AFF;}.child {width: 100%;height: 40px;background: #46E3B7;}</style>
</head>
<body>
<div class="box"><div id="current" class="current" onclick="currentClick()">current<div class="child" onclick="childClick()">child</div></div>
</div>
<script>const current = document.getElementById('current')function currentClick() {console.log('current-click')}function childClick() {console.log('child-click')}document.addEventListener('click', (e) => {console.log(current.contains(e.target))})
</script>
</body>
</html>

即使点击子元素,也能被我们判断到。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/628009.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库重点简答题

文章目录&#xff08;持续更新&#xff09; 数据库重点简答题&#x1f4e3;一、SQL语言的作用&#xff1f;&#x1f4e3;二、说一下你对ER图的认识&#xff1f;&#x1f4e3;三、数据库中的三个模型&#xff1f;&#x1f4e3;四、数据库基本表和视图的区别和联系&#xff1f;&a…

Qt 信号和槽机制

一. 简介 在Qt中使用信号和槽机制来完成对象之间的协同操作。简单来说&#xff0c;信号和槽都是函数&#xff0c;比如按下窗口上的一个按钮后想要弹出一个对话框&#xff0c;那么就可以将这个按钮的单击信号和我们定义的槽关联起来&#xff0c;在这个槽中可以创建一个对话框&am…

Linux相关命令使用

一、Vi与Vim编辑器 1、正常模式 以vim打开一个档案就直接进入一般模式了&#xff0c;在这个模式中&#xff0c;你可以使用【上下左右】移动光标&#xff0c;可以使用【删除字符】或【删除整行】来处理档案内容&#xff0c;也可以使用【复制、粘贴】来处理你的文件数据。 2、…

训练DAMO-YOLO(damoyolo_tinynasL25_S.py)

文章目录 参考链接1 准备数据1.1 转为COCO格式1.2 指明数据路径 2 设置训练配置文件&#xff0c;在configs/damoyolo_tinynasL25_S.py进行如下两块修改2.1 关于训练参数的设置2.2 根据自己数据集设置 3 开始训练4 调用tools/eval.py进行测试5 训练时可能遇到的报错5.1 RuntimeE…

前端JS实现全屏和退出全屏的效果

全屏效果想必我们都很清楚把&#xff0c;平时追剧看电视剧什么都会使用全屏方便我们看&#xff0c;我们键盘的第一个键esc可以退出全屏&#xff0c;那么我们如何用js实现全屏的办法呢&#xff1f; 设置全屏 Document.requestFullscreen()&#xff0c;该方法用于异步请求使元素…

详解Matlab深度学习进行波形分割

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 &#x1f510;#### 防伪水印——左手の明天 ####&#x1f510; &#x1f497; 大家…

【DB】Redis缓存优化策略之,缓存预热与缓存清除

文章目录 1、什么是缓存优化&#xff1f;2、缓存预热3、缓存清除/更新4、reids缓存预热与清除5、总结 1、什么是缓存优化&#xff1f; 缓存是一种数据存储技术&#xff0c;用于存储经常访问的数据&#xff0c;以便在需要时快速获取。通过缓存数据&#xff0c;可以减少数据的访…

mysql进阶-深度为2的B+Tree树能存储多少行数据?

目录 1. 非叶子节点计算 2. 叶子节点存储的是完整的数据。 3. 整体计算 BTree树需要计算有叶子节点和非叶子节点。 假设一张商品表的数据结构如下&#xff1a; CREATE TABLE t_good (good_id int(12) NOT NULL AUTO_INCREMENT COMMENT 主键,good_name varchar(20) DEFAULT…

深度学习的基本概念汇总

这里小小总结一下看论文时常见到的名词&#xff0c;不用再一个个搜索啦&#xff01;&#xff01;&#xff01; 1.batch size batch size是指在训练集中取的样本数&#xff0c;batch的size设置的不能太大也不能太小&#xff0c;因此实际工程中最常用的就是mini-batch&#xff0c…

C#编程-实现委托

实现委托 委托是可以存储对方法的引用的对象。在C#中,委托允许您动态地改变类中方法的引用。 考虑咖啡售货机的示例,它配置不同口味的咖啡,例如卡布奇诺咖啡和黑咖啡。在选择所需口味的咖啡时,售货机决定混合各种成分,例如奶粉、咖啡粉、热水、卡布奇诺咖啡粉。所有的材…

.Net Core 使用 AspNetCoreRateLimit 实现限流

上一篇文章介绍过ASP.NET Core 的 Web Api 实现限流 中间件-CSDN博客 使用.NET 7 自带的中间件 Microsoft.AspNetCore.RateLimiting 可以实现简单的Api限流&#xff0c;但是这个.NET 7以后才集成的中间件&#xff0c;如果你使用的是早期版本的.NET&#xff0c;可以使用第三方库…

React函数式组件学习笔记

React是一种用于构建用户界面的JavaScript库&#xff0c;它采用组件化的方式来构建复杂的UI。在React中&#xff0c;函数式组件是一种声明式的方式去描述UI的状态和行为。 React的特性 1.声明式设计-React采用声明范式&#xff0c;可以轻松描述应用 2.高效-React通过对DOM的模…

LaTeX系列1——主结构

初学&#xff0c;可交流&#xff0c;轻喷 \documentclass{book} \begin{document} \title{Book Title} \author{Author Name} \date{\today} \maketitle\chapter{Introduction} This is the introduction chapter of the book.\section{First Section} The first section of t…

【算法】使用栈解决一系列算法题(匹配、表达式、模拟)(C++)

1. 前言&#xff08;栈适用于解哪些题&#xff1f;&#xff09; 栈适合解决需要后进先出&#xff08;LIFO&#xff09;的结构的算法题&#xff0c;例如&#xff1a; 括号匹配问题&#xff1a;判断给定字符串中括号是否匹配。表达式求值问题&#xff1a;将表达式转换为后缀表达…

笙默考试管理系统-MyExamTest----codemirror(71)

笙默考试管理系统-MyExamTest----codemirror&#xff08;71&#xff09; 目录 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管理系统-MyExamTest----codemirror 四、 笙默考试管理系统-MyExamTest---…

C++/WinRT 中的字符串处理

利用 C/WinRT&#xff0c;你可以使用 C 标准库宽字符串类型&#xff08;如 std::wstring&#xff09;调用 Windows 运行时 API&#xff08;注&#xff1a;不要使用窄字符串类型&#xff0c;例如 std::string&#xff09;。 C/WinRT 确实有名为 winrt::hstring 的自定义字符串类…

js 常用基础 老写不出来的问题记录--持续更新

1、result返回一个数组 数组包含多个对象数组对象 要这个数组对象的其中两个属构成新的数组对象 这个时候就使用到了map函数 map可以映射原本数组中的每个元素 返回一个新的数组 result.map(item > { return { id:item.id, name:item.talentsName }})//定义新数组的每项数…

《每天一分钟学习C语言·十二》各种指针问题

1、 int arr; int * restrict pt &arr; *pt 100; *arr 10;注&#xff1a;restrict只能修饰指针&#xff0c;被restrict修饰的指针指向一块内存后这块内存就归这个指针管理了&#xff0c;其他任何指针都不能修改这块内存的内容&#xff0c;这是一个约定&#xff0c;当…

vue+js 实现将变量参数写至Cookie中,并进行读取,可以一次性写入多个值

vuejs 实现将变量参数写至cookie中&#xff0c;并进行读取&#xff0c;可以一次性写入多个值 【使用Vue和JavaScript将变量参数写入cookie并进行读取的示例代码】 <template><div><button click"writeToCookie">写入Cookie</button><but…

BGP安全特性详解(不看后悔!!!)

BGP安全特性 一、MD5认证 BGP认证只支持MD5认证&#xff0c;没有明文认证&#xff1b;BGP报文中没有设计认证字段&#xff0c;认证信息是存放到TCP报文中的option字段携带。 配置命令&#xff1a; peer x.x.x.x password cipher xxxx 二、GTSM GTSM&#xff0c;有效防止基…