当前位置: 首页 > 知识库问答 >
问题:

前端 - 在一个div里面还镶嵌有一个div,两个都有点击事件,两个点击事件不同,应该是怎么做?

甘祺
2023-05-21

在一个div里面还镶嵌有一个div,两个都有点击事件,两个点击事件不同,应该是怎么做?
外层点击事件不能影响到内部的点击,这个处理应该叫做什么?

共有2个答案

司空宗清
2023-05-21

vue2用事件修饰符.self,就行,原生这样:

<div id="outerDiv">
  <div id="innerDiv">
    
  </div>
 
</div>

<script>
document.querySelector('#innerDiv').addEventListener('click', function(event) {
  event.stopPropagation();
  // 内部div的点击事件处理代码
});

document.querySelector('#outerDiv').addEventListener('click', function(event) {
  // 外部div的点击事件处理代码
});
</script>
宗沛
2023-05-21

需要在内部 div 元素绑定的事件回调函数中调用 event.stopPropagation() 停止事件冒泡。

innerDom.addEventListener(function (e) {
    // your code...

    // 停止事件冒泡
    e.stopPropagation();
});

这个涉及到浏览器事件的传播机制。

浏览器的事件主要分为捕获阶段和冒泡阶段,当一个 dom 元素触发事件的时候,会从 document -> body -> target 依次触发元素的捕获回调函数,然后从 target -> body -> document 依次触发元素的冒泡回调函数。

当调用e.stopPropagation()时, 事件会停止向上父级元素传递。这样父级元素就无法触发事件回调了。

具体可以看下这篇文章:https://juejin.cn/post/6844903834075021326

 类似资料:
  • 问题内容: 我有这样的HTML结构: 当前,当我单击带有ID的时,两个函数都被触发,但是我希望那个函数被触发。我怎样才能做到这一点? 问题答案: 您需要做的就是停止事件传播/冒泡。 此代码将帮助您: 如果您的和函数如下所示,则单击DIV 时您只会进入控制台。如果没有,您将在控制台输出窗口中跟随。

  • 我需要创建一个按钮,如下所示: HTML 如何在JS文档中指定这些函数?

  • 使用React,我有一个包含信息的div,其中另一个div包含项目列表。我希望第二个div(列表)可以在单击时折叠。如果我将click listener放在第一个div中,它将工作并显示项目列表。问题是它显示了所有项目的所有列表。我只希望单击项目的列表可见: 如果我在之后添加括号,我会收到以下警告: 警告:在现有状态转换期间(例如在

  • 我有一个带有类的并且在它里面有一个另一个带有类的。我从数据库中提取了数据,并将提取的数据转换为。我使用了那个json格式的数据,并在那个带有类的div上生成了一些信息,这些信息是。 我第一个jquery代码用类在div中追加数据,该代码如下所示:- 在上面,我首先获得了json格式的数据,并进行了一些验证,然后最后我用类在第一个div中附加了第二个div并用类。 我们知道是一个附加的div,我想在

  • 本文向大家介绍外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?相关面试题,主要包含被问及外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?时的应答技巧和注意事项,需要的朋友参考一下 可以设置外层自适应高度的容器为布局,利用属性即可实现自动填满剩余高度;代码如下: 在线demo

  • 我需要在portlet控制器中调用action方法之前调用一个方法。 所以我用了一个钩子,比如: 创建钩子 创建一个类并扩展Action。 覆盖run方法编写我自己的逻辑。 创建portal.properties文件并添加以下行 servlet。服务事件。pre=com。利弗雷。样品钩登录 每件事都进行得很好,但这里的问题是每次页面加载时都会执行创建的钩子,但我想执行这个钩子只是当我单击任何por