首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vanilla JS:捕获包装元素点击,但不捕获其子元素

Vanilla JS是指纯粹的JavaScript,即不依赖任何框架或库的原生JavaScript。在处理捕获包装元素点击但不捕获其子元素的需求时,可以使用以下方法:

  1. 事件委托(Event Delegation):通过将事件监听器绑定到父元素上,利用事件冒泡的特性来捕获子元素的点击事件。然后通过判断事件的目标元素是否为所需的包装元素,来执行相应的操作。这样可以避免为每个子元素都绑定事件监听器,提高性能和代码的可维护性。

示例代码如下:

代码语言:txt
复制
var parentElement = document.getElementById('parentElement');

parentElement.addEventListener('click', function(event) {
  var targetElement = event.target;
  
  // 判断目标元素是否为包装元素
  if (targetElement.classList.contains('wrapper')) {
    // 执行操作
    console.log('点击了包装元素');
  }
});

在上述代码中,我们通过addEventListener方法将点击事件监听器绑定到父元素parentElement上。当点击事件发生时,通过event.target获取到实际被点击的元素,然后通过判断该元素是否具有名为wrapper的CSS类来确定是否为包装元素。

  1. 使用事件对象的currentTarget属性:在事件处理函数中,可以使用事件对象的currentTarget属性来获取当前正在处理事件的元素,而不是实际被点击的元素。通过判断currentTarget是否为所需的包装元素,来执行相应的操作。

示例代码如下:

代码语言:txt
复制
var wrapperElement = document.getElementById('wrapperElement');

wrapperElement.addEventListener('click', function(event) {
  var currentElement = event.currentTarget;
  
  // 判断当前元素是否为包装元素
  if (currentElement === wrapperElement) {
    // 执行操作
    console.log('点击了包装元素');
  }
});

在上述代码中,我们通过addEventListener方法将点击事件监听器绑定到包装元素wrapperElement上。当点击事件发生时,通过event.currentTarget获取到当前正在处理事件的元素,然后通过判断该元素是否与包装元素相等来确定是否为包装元素。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 腾讯云云函数(SCF):无服务器计算服务,支持事件驱动的函数计算。产品介绍链接
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务。产品介绍链接
  • 腾讯云人工智能(AI):提供丰富的人工智能服务,包括图像识别、语音识别、自然语言处理等。产品介绍链接
  • 腾讯云物联网(IoT):提供全面的物联网解决方案,支持设备连接、数据管理、应用开发等。产品介绍链接
  • 腾讯云区块链(BCS):提供安全、高效的区块链服务,支持快速搭建和管理区块链网络。产品介绍链接
  • 腾讯云视频处理(VOD):提供视频上传、转码、截图、水印等功能,满足视频处理需求。产品介绍链接

以上是对Vanilla JS捕获包装元素点击但不捕获其子元素的完善且全面的答案,希望能对您有所帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

五个特性,让你升级React

它会在其组件树中的任何位置捕获 js错误,并记录这些错误,展示降级 UI 而不是崩溃的组件树。...(3)错误边界无法捕获下面场景中产生的错误: 事件处理 异步代码(例如 setTimeout 或 requestAnimationFrame 回调函数) 服务端渲染 错误边界仅可以捕获组件的错误...,它无法捕获自身的错误。...新增):会被渲染为文本节点 Portals插槽(v16.0.0新增):可渲染节点到父组件之外 下面分别来看下新增的返回 3.1数组--v16.0.0新增 render() { // 不需要将清单项包装在额外的元素中...// 第一个元素是任何可渲染的 React 元素 // 第二个元素domNode是一个可以在任何位置的有效 DOM 节点。

2.2K111

100个最常问的JavaScript面试问答-第2部分(共10部分)

通过与Vanilla JS中的对象进行交互或使用jQuery的prop()方法,可以访问property。 attributes位于HTML中,而不是DOM中。...如果单击元素,它将child, parent, grandparent, html, document 和window分别记录在控制台上。 这整个事件是事件冒泡。 问题16.什么是事件捕获?...如果单击元素,它将window, document, html, grandparent, parent和child分别记录在控制台上。...答: event.preventDefault()方法可防止元素的默认行为。 如果在表单元素中使用,它将阻止提交。 如果在锚元素中使用,它将阻止导航。...如果在上下文菜单中使用,它将阻止显示或显示。 当event.stopPropagation()方法停止事件的传播时。 它阻止了事件在冒泡或捕获阶段发生。

1.1K31

Vue基础:条件渲染、列表渲染、事件处理

v-if 是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和组件适当地被销毁和重建。...为了解决这个问题,Vue.js 为 v-on 提供了 事件修饰符。通过由点(.)表示的指令后缀来调用修饰符。....stop:阻止单击事件冒泡 .prevent:禁止默认行为 .capture:使用事件捕获模式 .self:只当事件在该元素本身(比如不是元素)触发时触发回调【不接受冒泡上来的事件】 .once:点击事件将只会触发一次...blog.csdn.net/ligang2585116" target="_blank" @click.self.prevent="clickBtn"> Button只会阻止元素上的点击... 说明:点击Button字样,都会执行响应的click事件但不会跳转。

1.9K41

面试官:什么是js中的事件流以及事件模型?

一、事件 在了解什么是js中的事件流之前,我们先了解一下什么是js的事件。...依次触发祖先节点的同类型事件,直到DOM根节点 事件捕获 当节点事件被触发时,会从DOM根节点开始,依次触发子孙节点的同类型事件,直到当前节点自身。...六、stopPropagation()阻止捕获 stopPropagation() 方法防止调用相同事件的传播。 传播意味着向上冒泡到父元素或向下捕获元素。...btn3时冒泡执行至btn2后就进行了终止 七、事件流模型的应用 事件委托 又叫 事件代理,指的是利用事件冒泡原理,只需给外层父容器添加事件,若内层元素点击事件,则会冒泡到父容器上,这就是事件委托...,简单说就是:元素委托它们的父级代为执行事件。

1.9K10

急速 debug 实战一(浏览器-基础篇)

DevTools 执行但不进入 inputsAreEmpty()。 请注意 DevTools 是如何跳过几行代码的。...DOM 在更改或移除特定 DOM 节点或级的代码中。 XHR 当 XHR 网址包含字符串模式时。 事件侦听器 在触发 click 等事件后运行的代码中。...Breakpoints 窗格中取消激活的断点已停用且处于透明状态 DOM 更改断点 如果想要暂停更改 DOM 节点或级的代码,可以使用 DOM 更改断点。...若要设置 DOM 更改断点: 点击 Elements 标签。 转至要设置断点的元素。 右键点击元素。...异常断点 如果想要在引发已捕获或未捕获异常的代码行暂停,可以使用异常断点。 点击 Sources 标签。 点击 Pause on exceptions 启用后,此按钮变为蓝色。

3.3K10

【愚公系列】2023年03月 其他-Web前端基础面试题(JS_33道)

事件委托指的是,不在事件的发生地(直接 dom)上设置监听函数,而是在其父元素上设置监听函数,通过事件冒泡,父元素可以监听到元素上事件的触发,通过判断事件发生元素 DOM 的类型,来做出不同的响应。...mouseover:当鼠标移入元素元素都会触发事件,所以有一个重复触发,冒泡的过程。...对应的移除事件是 mouseout mouseenter:当鼠标移除元素本身(不包含元素元素)会触发事件,也就是不会冒泡,对应的移除事件是 mouseleave 8、JS 的 new 操作符做了哪些事情...触发的动作,是要看具体的业务场景而言,包括但不限于以下几个情况:鼠标点击、输入文字、拉动滚动条,鼠标移动、窗口大小更改等。加载的文件,可以是 JS、图片、CSS、HTML 等。...事件传递有两种方式,冒泡和捕获 事件传递定义了元素事件触发的顺序,如果你将 P 元素插入到 div 元素中,用户点击 P元素,在冒泡中,内部元素先被触发,然后再触发外部元素捕获中,外部元素先被触发,

89510

11 个很酷的 Chrome Devtools 技巧

我们可以用它来查看网络请求、分析网页性能、调试最新的 JavaScript 功能…… 除了这些,它还提供了很多强大但不常见的功能,可以大大提高我们的开发效率。 我们来看一下。...2.在控制台使用`$I`安装npm包 有时候想用day.js或者lodash之类的API,又不想去官网查。如果你可以直接在控制台上尝试它会很好。...通过 Elements 面板选择 DOM 元素。 使用 $0 访问控制台中的元素。 8.捕获全尺寸屏幕截图 如果我们要对一个多屏的页面进行截图,有什么好的办法吗?...也很简单,在第三步输入“捕获节点截图”即可。 9.展开所有节点 如何一次展开 DOM 元素的所有节点?不是一个一个吗?...你可以使用“元素”面板中的组合键“Alt + 单击”一次展开所有节点。

95120

CSS in JS 新秀:vanilla-extract 浅析

那么在上述代码里的selectors而言,「目标必须是」**&**(也就是自身元素)而不能是其他元素。例如:`${parentClass} &`是OK的,但是`& div`是不允许的。...对于一些特殊情况,比如:在写styled-components我们会利用包裹arco组件(或是其他组件),然后对其内部元素样式进行覆写或是新增。...,因为每个样式块都是针对某个元素,是不能直接通过该样式块,直接对兄弟元素元素进行样式调整。...但是因为本身vanilla-extract走css module,每个className都是独一无二,那么通过globalStyle来对元素进行样式调整覆盖完全是可行的。...总结 目前了解下来,vanilla-extract是一个总体还不错的css in js库,虽然目前使用率比较低,但是后续厂商平台项目会考虑在一些地方使用看看效果(毕竟不会增大js体积)。

2K10

React Advanced Topics

错误边界是一种 React 组件,这种组件可以捕获并打印发生在其组件树任何位置的 JavaScript 错误,并且,它会渲染出备用 UI,而不是渲染那些崩溃了的组件树。...注意错误边界仅可以捕获组件的错误,它无法捕获自身的错误。如果一个错误边界无法渲染错误信息,则错误会冒泡至最近的上层错误边界,这也类似于 JavaScript 中 catch {} 的工作机制。...你也可以将单独的部件包装在错误边界以保护应用其他部分不崩溃。 关于事件处理器 错误边界无法捕获事件处理器内部的错误。 React不需要错误边界来捕获事件处理器中的错误。...详情请点击这里。 在某一时间节点调用 React 的 render() 方法,会创建一棵由 React 元素组成的树。...能够在父元素元素之间交错处理,以支持 React 中的布局。 能够在 render() 中返回多个元素。 更好地支持错误边界。 为了做到这一点,我们首先需要一种将工作分解成多个单元的方法。

1.6K20

【读码JDK】-java.lang包介绍

BootstrapMethodError 表示invokedynamic指令或动态常量不能解决引导方法和参数 Byte byte的包装类 Character char的包装类 疑点: isTitleCase...但不使用该注解,编译器还是会将满足功能接口定义的任何接口视为功能接口 IllegalAccessError 如果应用程序尝试访问或修改字段,或调用无权访问的方法,则抛出该异常。...实例化可能由于各种原因而失败,包括但不限于: class对象表示抽象类,接口,数组类,基元类型或void 该类没有空构造函数 Integer 基本类型int的包装类型 InternalError 表示虚拟机内部发生了意外错误...访问或修改值为null的元素。...允许线程访问有关自己的线程组的信息,但不允许访问有关线程组的父线程组或任何其他线程组的信息。

1.5K20

JS事件,你真的懂吗(捕获,冒泡)?

说到js事件大家肯定都知道,那么今天讲一点大家不知道的(假设大家不知道?)。 所有的js事件都会分为两个阶段捕获和冒泡。...,会发现终端打印出来如下图所示 首先是outer捕获阶段 其次是inner捕获阶段 然后是inner冒泡阶段 最后是outer冒泡阶段 由此我们可以看到,事件触发的时候实际上都是有捕获和冒泡阶段的,并且捕获阶段会从最外层的父级元素开始捕获...,一直捕获到最后触发事件的那个元素点才会停止,那么冒泡阶段反之,会从最内层触发的那个元素开始往外层的父级元素一直冒泡。...方法来判断触发的节点是不是当前我们点击的节点,就可以很巧妙的阻止事件的冒泡了。 应用场景举例 可能很多朋友感觉,这个东西我根本用不到啊,不会出现这种情况,我怎么会把父元素元素绑定相同的事件呢?...点击这条消息可查看详情,点击删除按钮可将此商品移除。我们会分别给信息的div和删除button添加一个冒泡的click事件监听。如果不做阻止传递,点击删除button后,会显示商品详情。

2.3K20

前端学习(51)~事件的传播和事件冒泡

DOM事件流 事件传播的三个阶段是:事件捕获、事件冒泡和目标。 事件捕获阶段:事件从祖先元素元素查找(DOM树结构),直到捕获到事件目标 target。...重点:捕获阶段,事件依次传递的顺序是:window --> document --> html--> body --> 父元素元素、目标元素。...(2)JS中涉及到DOM对象时,有两个对象最常用:window、doucument。它们俩是最先获取到事件的。...事件冒泡 事件冒泡: 当一个元素上的事件被触发的时候(比如说鼠标点击了一个按钮),同样的事件将会在那个元素的所有祖先元素中被触发。...这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。 通俗来讲,冒泡指的是:元素的事件被触发时,父元素的同样的事件也会被触发。取消冒泡就是取消这种机制。

91820

每天10个前端小知识 【Day 3】

由于 mouseenter 不支持事件冒泡,导致在一个元素元素上进入或离开的时候会触发 mouseover 和 mouseout 事件,但是却不会触发 mouseenter 和 mouseleave...offsetTop 返回的是当前元素相对于 offsetParent 元素的顶部的距离。 offsetLeft 返回的是当前元素相对于 offsetParent 元素的左部的距离。...顾名思义,“事件代理”即是把原本需要绑定在元素的响应事件委托给父元素,让父元素担当事件监听的职务。 事件代理的原理是DOM元素的事件冒泡。...一个事件触发后,会在元素和父元素之间传播(propagation)。这种传播分成三个阶段。...捕获阶段:从window对象传导到目标节点(上层传到底层)称为“捕获阶段”(capture phase),捕获阶段不会响应任何事件; 目标阶段:在目标节点上触发,称为“目标阶段” 冒泡阶段:从目标节点传导回

10910

JS事件流、事件冒泡、阻止冒泡、事件捕获(一看就懂)

一个完整的JS事件流是从window开始,最后回到window的一个过程。 事件流被分为三个阶段(1~ 5)捕获过程、(5~ 6)事件触发过程、(6~ 10)冒泡过程。...三、阻止冒泡 1、JS阻止事件冒泡 我们用 e.stopPropagation() 这个方法添加到某事件函数里的末尾,就可以做到阻止冒泡事件。...click(function () { alert("你点击了child区域"); return false; }); 四、事件捕获 讲事件捕获之前先了解下...div2") },false); 当点击元素 div2 的时候,会先弹出 你点击了div2 的弹框后,再弹出 你点击了div1 的弹框。...你点击了div2") },false); 当点击元素 div2 的时候,会先弹出 你点击了div1 的弹框后,再弹出 你点击了div2 的弹框。

10.7K53
领券