开发者问题收集

我怎样才能阻止 JavaScript 函数

2013-09-11
73

我有两个元素:

<div class="a" onclick="a();">a
    <div class="b" onclick="b();">b</div>
</div>

当我单击 a 时,只会显示警报 a,但是当我单击 b 时,我只想看到警报 b。

我认为这个例子更好地解释了我。

http://jsbin.com/Aruciyi/1/edit?html,css,js,output

例如,如何通过单击红色块来获取警报 b...

2个回答

使用 event.stopPropagation ,如下所示:

function b(event){
    event = event || window.event;
    event.stopPropagation();
    alert('b');
}

这会将点击事件捕获在内部 div 中,并阻止其冒泡到外部 div。

另外:像这样更改您的 onclick 属性:

<div class="b" onclick="b(event);">b</div>

因此,您明确将 event 对象传递给 b 函数。

2013-09-11

提供的答案有效,但我更喜欢创建一个通用的点击函数。我将您的类更改为 ID,以便更容易获取它们。以下是代码:

<div id="a" onclick="clickEvent(event, this);">a
  <div id="b" onclick="clickEvent(event, this);">b</div>
</div>

JavaScript:

function clickEvent(e, o) {
  alert(o.id);
  event = e || window.event;
  event.stopPropagation();
}

这是一个 演示

Graham Walters
2013-09-11