Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止链接单击时的事件传播?_Javascript_Stoppropagation - Fatal编程技术网

Javascript 如何防止链接单击时的事件传播?

Javascript 如何防止链接单击时的事件传播?,javascript,stoppropagation,Javascript,Stoppropagation,当我点击我的a标签时,我不想触发父事件。如果孩子有一个正常的事件监听器,event.stopPropagation()可以阻止它,但是当没有“event”时,我该如何做呢 标题 document.getElementById(“父”).addEventListener(“单击”,函数)(){ 警惕(“哦,不,你点击了我!”); }); 方法1 如果子级有一个正常的事件侦听器,则可以通过event.stopPropagation()阻止它 对 但在没有“事件”的情况下,我该如何做呢 有一件事。你

当我点击我的a标签时,我不想触发父事件。如果孩子有一个正常的事件监听器,event.stopPropagation()可以阻止它,但是当没有“event”时,我该如何做呢


标题
document.getElementById(“父”).addEventListener(“单击”,函数)(){
警惕(“哦,不,你点击了我!”);
});
方法1 如果子级有一个正常的事件侦听器,则可以通过event.stopPropagation()阻止它

但在没有“事件”的情况下,我该如何做呢

有一件事。你只是没在听

您可以通过侦听子元素来解决此问题:

document.getElementById(“父”).addEventListener(“单击”,函数)(){
警惕(“哦,不,你点击了我!”);
});
document.querySelector(“a”).addEventListener(“单击”,函数(e){
e、 停止传播();
});

只需在链接中添加一个单击侦听器,您就可以在该链接上执行
事件.stopPropagation()。这将防止单击子对象产生气泡(从而触发单击父对象)

document.getElementById(“父”).addEventListener(“单击”,函数)(){
log('parent received click');
});
document.getElementById(“子”).addEventListener(“单击”),函数(e){
e、 preventDefault();//此行阻止更改链接href的URL
e、 stopPropagation();//此行防止链接单击冒泡
log('child clicked');
});

试试这个

document.getElementById(id-here).addEventListener("click", function(e) {
  e.stopImmediatePropagation();
  console.log("clicked");
});

调用
event.stopImmediatePropagation()将为您提供预期的结果。
事件
对象也可以在
onclick
处理程序中使用:

<a id="child" href="https://i.kym-cdn.com/entries/icons/facebook/000/013/564/doge.jpg"
  onclick="event.stopPropagation()">Text</a>

灵感来源于


⚠️ 与Internet Explorer不兼容,但与Edge(在v89上测试)配合良好。

您似乎从我的答案中复制粘贴了代码…您这样做是因为您的版本中未定义
黑名单
,这也无法理解问题。您添加的内容将停止在“parent”的祖先上触发事件,但目标是在单击“parent”内的链接时停止在“parent”上的事件。很抱歉,我刚从up获得代码,我认为这是从问题中获得的。等等,我将编辑+我想突出显示stopImmediatePropagation()函数。。不是我在前面的评论中指出的代码,在“parent”上调用
stopImmediatePropagation
不会解决问题。是的,我同意,这里ID应该是子元素的ID。
<a id="child" href="https://i.kym-cdn.com/entries/icons/facebook/000/013/564/doge.jpg"
  onclick="event.stopPropagation()">Text</a>