JavaScript - div 的顺序,其中顶部的不受 div 下面的 onclick 脚本的影响

标签 javascript html onclick

我有三个相互堆叠的 div 框,因此其中一个比背景 div 更近。但是背景 div 有这个事件处理程序:onclick="hideLarge();"

问题是,当我点击前面的 div 框时,即使它阻止了背景 div 的可见性,它仍然会触发我不希望它执行的 onclick 函数。

有没有办法让前面的div框可以拦截这些?

谢谢!

最佳答案

如果你的 DOM 结构是这样的:

Document
 |- BODY
     |- DIV(#1)
         |- DIV(#2)
         |- DIV(#3)
             |- DIV(#4)
             |- DIV(#5)

然后点击#4、#5 将冒泡到#3 和#1,而点击#3 和#2 将冒泡到#1。

另一方面,如果您有这样的结构:

Document
 |- BODY
     |- DIV(#1)
     |- DIV(#2)
     |- DIV(#3)
     |- DIV(#4)
     |- DIV(#5)

除 document.body 和 document 之外,所有 div 都不会跳动。

您可以使用 event.stopPropagation() 来阻止事件冒泡。假设我们在示例 1 中的 #5 上绑定(bind)了一个点击监听器:

div5.addEventListener('click', function(event) {
    event.stopPropagation();
}, false);

事件将在到达 div #3 之前停止,因此也不会到达 #1。

如果您在#5 上绑定(bind)了多次单击事件,这些事件将不会停止。如果你想停止这些,你应该使用 event.stopImmediatePropagation()

请注意,某些版本的 IE 有不同的方式来执行此操作。

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener

关于JavaScript - div 的顺序,其中顶部的不受 div 下面的 onclick 脚本的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897315/

相关文章:

javascript - 具有可点击的父 div 和可点击的子 div

javascript - 提交按钮的Onclick元素未调用JS函数

Android Toast 消息回调或任何触摸事件

javascript - 为什么文字会压低图片?

javascript - 如何使用 jquery 动态创建 iframe HTML

javascript - 在 Angular.JS 中查看字段名称和值的更好方法

java - Selenium - 跳过一张 table

javascript - 悬停div,显示文本和不透明度

javascript - 如何使用javascript获取svg中<g>标签的中点

javascript - 在 React(客户端)中上传 .json 文件并将其发送到 Node(服务器端)