javascript - 检测 2 个重叠同级元素上的事件?

标签 javascript html css

我有两个重叠的 sibling ,如下所示:

document.querySelector("#item1").addEventListener('mouseup',()=>{
    console.log("Mouseup item 1!");
});

document.querySelector("#item2").addEventListener('mouseup',()=>{
console.log("Mouseup item 2!")
},true);
#item1{
  height:10rem;
  width:10rem;
  background-color:red;
  position:absolute;
  z-index:-2;
  
}

#item2{
  height:10rem;
  width:10rem;
  background-color:green;
  position:relative;
  top:2rem;
}
<div id="item1"></div>
<div id="item2"></div>

每当我在 item2 上 mouseup 时,如果鼠标位于 item1 内,我希望 item1 mouseup 事件也被触发

(基本上我希望在鼠标所在的任何div上触发mouseup,无论哪个div与什么重叠)

如何实现这一目标?

最佳答案

使用elementsFromPoint作为@Teemu在我想出的评论中“指出”的内容:

document.querySelector("#wrapper").addEventListener('mouseup', (event) => {
  let els = document.elementsFromPoint(event.clientX, event.clientY);
  els.forEach(el => {
    if (el.id != '' && el.id != 'wrapper')
      console.log(el.id)
  })
});
#item1 {
  height: 10rem;
  width: 10rem;
  background-color: red;
  position: absolute;
}

#item2 {
  height: 10rem;
  width: 10rem;
  background-color: green;
  position: relative;
  top: 2rem;
}

#wrapper {
  background-color: blue;
  height: 20rem;
  width: 20rem;
}
<div id="wrapper">
  <div id="item1"></div>
  <div id="item2"></div>
</div>

关于javascript - 检测 2 个重叠同级元素上的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72569364/

相关文章:

javascript - onClick 事件无法执行功能

javascript - js 提交按钮显示 'submit query' ,不起作用,仅在 IE Edge/IE * 中

javascript - 表 'add' 行正在添加多行

html - 为什么这个内联 block 元素的内容没有垂直对齐

javascript - 具有不透明度的重叠元素并处理这些元素上的 'hover'

html - CSS组合样式问题

Javascript理解回调函数和执行

javascript - 如何获取html属性的值

javascript - 检查所有数组是否有值且不为空

html - 当浏览器中没有闪烁时,Uploadify 会破坏文件上传