首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单击子事件时仅触发父点击事件

如何在单击子事件时仅触发父点击事件
EN

Stack Overflow用户
提问于 2016-08-10 06:43:45
回答 4查看 74.5K关注 0票数 53

子元素和父元素都是可点击的(子元素可以是带有jQuery点击事件的链接或div )。当我单击子事件时,如何只触发父点击事件而不触发子事件?

EN

回答 4

Stack Overflow用户

发布于 2018-06-11 15:00:40

在某些情况下,当您知道没有任何子元素是交互式的时,另一个可能有用的方法是在您的css (link)中设置pointer-events: none。我通常将其应用于要捕获交互的元素的所有子元素。如下所示:

代码语言:javascript
运行
复制
#parentDiv * {
    pointer-events: none
}

请注意*,它声明规则适用于parentDiv的所有子对象。

票数 46
EN

Stack Overflow用户

发布于 2020-07-14 00:43:25

  • 阻止children接收父级的单击事件:

代码语言:javascript
运行
复制
parent.addEventListener('click',function(e){
  e.stopPropagation();
  console.log('event on parent!')
},true);

(请注意,第二个参数是true)

  • 阻止parent接收自身或其孩子的单击事件:

代码语言:javascript
运行
复制
parent.addEventListener('click',function(e){
  e.stopPropagation();
  console.log('event on parent or childs!', e.target.closest('.parent_selector'))
});

  • e.stopPropagation意味着停止接收event.
  • second参数(useCapture)的层次结构中的下一个是一个标志,并且意味着颠倒接收事件的顺序。(使用capture阶段而不是bubble阶段。)这意味着如果您将其设置为true,那么父级将接收到单击事件,然后是子级。(通常情况下,孩子将首先获得事件。)

(详细解释请参见@Makyen的答案。)

票数 3
EN

Stack Overflow用户

发布于 2020-03-29 20:13:44

为了让生活变得简单和容易,我在这里

在父节点上使用,如下所示

代码语言:javascript
运行
复制
target_image.addEventListener('drop',dropimage,true);

这将启用父子祖先关系,并且将为父和子调用相同的事件。

若要使事件仅为父级调用,请在事件处理程序中使用以下代码片段。第一行

代码语言:javascript
运行
复制
event.stopPropagation();
event.preventDefault();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38861601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档