首页 > 解决方案 > 如何监听父点击 JS?

问题描述

我有 HTML 结构:

<div class="parent">
   <div class="child_1"><div class="child_1_1"></div></div>
   <div class="child_2"></div>
</div>

所以,当我点击父元素时,我调用函数:

 public openAccordion(event: any): void {
    if (event.target.className == "parent") {
       // TODO
    }
  }

为了发挥作用,我通过event并检查它是否包含特定的类:className

但是当我点击子元素时,这个条件不起作用,那么,如何总是获取父容器并检查它的类呢?

我这样分配:

<div(click)="openAccordion($event)">

标签: typescriptevent-handling

解决方案


这里发生的是您的点击事件将冒泡到您处理事件的父级。在 DOM 事件对象中,您有不同的事件目标用于不同的用途。

event.target您可以尝试使用event.currentTarget来获取事件处理程序附加到的元素,而不是使用。

Angular$event应该携带原始 DOM 事件的内容。


推荐阅读