为什么`event.preventDefault()`不适用于两个嵌套的div?

Fre*_*ind 2 html javascript events

function clickOut(event) {
  event.preventDefault();
  alert('click on out');
}

function clickIn(event) {
  event.preventDefault();
  alert('click on in');
}
Run Code Online (Sandbox Code Playgroud)
#out {
  width: 100px;
  height: 100px;
  border: 1px solid red;
}
#in {
  width: 50px;
  height: 50px;
  border: 1px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
<div id="out" onclick="clickOut(event)">
  <div id="in" onclick="clickIn(event)">
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

现场演示:http://jsbin.com/qomuteyoke/1/edit?html,css,js,output

为什么当我点击内部div时,即使我打电话,仍会弹出两个警报event.preventDefault()?首先是click on in,第二是click on out

kem*_*ica 6

尝试使用event.stopPropagation():

jQuery def:

描述:防止事件冒泡DOM树,防止任何父处理程序被通知事件.

MDN def:

防止进一步传播当前事件.

function clickIn(event) {
    event.stopPropagation();
    alert('click on in');
}
Run Code Online (Sandbox Code Playgroud)

  • 您提到的描述来自jQuery文档; 也许你会想要考虑[这个链接](https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation):) (2认同)