阻止锚点父元素点击事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阻止锚点父元素点击事件相关的知识,希望对你有一定的参考价值。

我在一个锚元素中有一个span元素。在span元素上是一个click事件。当我单击span并触发事件时,它也会触发锚父元素。

我已经用event.stopPropagation();尝试了它但没有效果。

这是一个代码示例

标记:

<a href="#">
    <span class="child"></span>
</a>

使用javascript

var children = document.getElementsByClassName("child");

for (var i = 0; i < children.length; i++) {
    children[i].addEventListener("click", function(event) {
        event.stopPropagation();
        console.log("test");
    }, false);
}

结果:单击span事件会触发单击事件功能和父锚元素。


这是实际的代码。

单击红色子元素会触发锚父元素和实际单击事件。

var deleteButtons = document.getElementsByClassName("delete");

for (var i = 0; i < deleteButtons.length; i++) {
  deleteButtons[i].addEventListener("click", function (event) {
    event.stopPropagation();
    console.log("test");
  }, false);  
}
.container {
  display: flex;
}

a {
  display: flex;
  position: relative;
  align-items: center;
  box-sizing: border-box;
  height: 48px;
  padding: 32px;
  margin: 0 16px 16px 0;
  border-radius: 8px;
  background-color: #CCD0D9;
  text-decoration: none;
  z-index: 99;
  transition: all .2s 
}

.text {
  color: #000;
}

.delete {
  position: absolute;
  z-index: 9999;
  top: 0;
  right: 0;
  height: 20px;
  width: 20px;
  background-color: tomato; 
}
<div class="container">
  <a href="https://www.google.com/">
    <span class="text">title</span>
    <span class="delete"></span>
  </a>

  <a href="https://www.google.com/">
    <span class="text">title</span>
    <span class="delete"></span>
  </a>

  <a href="https://www.google.com/">
    <span class="text">title</span>
    <span class="delete"></span>
  </a>

  <a href="https://www.google.com/">
    <span class="text">title</span>
    <span class="delete"></span>
  </a>
</div>
答案

event.preventDefault()是您正在寻找的那个。你的标记仍然没有意义。如果您不想单击锚标记,请将其设为div或其他内容。或者将on click函数添加到锚标记本身。

以上是关于阻止锚点父元素点击事件的主要内容,如果未能解决你的问题,请参考以下文章

阻止事件冒泡

仅捕获不是由锚点点击引起的 hashchange 事件

js阻止浏览器元素的默认事件与js阻止事件冒泡阻止事件流

embed标签 阻止点击事件 让父元素处理点击事件

js在父元素上添加点击事件,怎么阻止子元素继承父元素的点击事件?

js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件