停止点击传播到父级

时间:2016-09-05 02:51:33

标签: javascript reactjs

单击特定元素时,我想调用一个函数。当点击任何一个孩子时,我想要调用该功能。

使用jQuery。

示例:

我创建了一个模态:

<div class="fullscreen-overlay">
  <div class="card">
    ...
  </div>
</div>

我想在点击“.fullscreen-overlay”时调用我的closeModal()函数,但不要在点击“.card”或其任何内容时调用。{/ p>

的jsfiddle:

https://jsfiddle.net/5kuwmf9s/

研究

我可以发誓这里有一个CSS属性,但是在谷歌搜索并在搜索SO之后,我找不到它/可能是想象它。 “pointer-events”在目标元素上停止,而不是冒泡。

Theres另一个answer建议将事件处理程序附加到捕获事件并停止传播的所有子项 - 这似乎是不必要的。我的孩子很有活力,继续操作处理程序会很复杂。

2 个答案:

答案 0 :(得分:4)

您可能已对事件targetcurrentTarget

进行了比较

只有当前元素是事件的初始源时,它们才是相同的:

function handleClick(e){
  if (e.target === e.currentTarget) {
    alert('clicked!');
  }
}

参考文献:

JSFiddle:https://jsfiddle.net/u78k4k6t/

答案 1 :(得分:0)

  • 尝试使用元素并将其设置为'.fullscreen-overlay'并将事件绑定到此元素
  • 如答案链接所示
  • 使用event.target或event.srcElement