e.stopPropagation()停止事件冒泡

当事件发生的时候,如果想要阻挡事件向上传递,只要利用「事件物件」(Event Object)所提供的e.stopProoagation(),就可以阻止事件由触发的元素向外冒泡。

当我们有两个区块,一个叫inner,一个叫outer,inner被包在outer中间。

<div class="outer">
  <div class="inner"></div>
</div>
.outer {
  width: 400px;
  height: 400px;
  background: red;
  margin: 0 auto 0;
}

.inner {
  width: 200px;
  height: 200px;
  background: yellow;
  margin: 0px auto 0px;
  transform: translateY(50%);
}
var elOuter = document.querySelector('.outer');
elOuter.addEventListener('click',function () {
  alert('outer');
},false);

var elInner = document.querySelector('.inner');

elInner.addEventListener('click',function () {
  alert('inner');
},false);

因为「事件冒泡」的关系,点击inner会先跳出 「inner」的警告视窗,而click事件会传递到outer区块,跟着跳出「outer」的警告视窗。

如果要阻止事件冒泡向上传递,就要在addEventLister()的function(e){ }参数里面加上e,在function区块前面加上e.propagation,这样就能阻止事件向上传递了。

var elOuter = document.querySelector('.outer');
//在outer的节点上绑定事件监听,点击後跳出'outer'的警告视窗
elOuter.addEventListener('click',function () {
  alert('outer');
},false)

var elInner = document.querySelector('.inner');
//在inner的节点上绑定事件监听,点击後跳出'inner'的警告视窗
elInner.addEventListener('click',function (e) {
//阻止事件向外冒泡,只执行'inner'这个区块的程序码
  e.stopPropagation();
  alert('inner');
},false)

<<:  DAY12 - 档案类的物件关系厘清(1) - File, FileList, Blob

>>:  Day 13 - 依 COMPANY 前台页面分析拆解後,逐步建立後台功能 - 文字编辑器及相簿应用 - ASP.NET Web Forms C#

第一天:为什麽该学好 Gradle?

开始接触 Gradle 的原因 身为一位 Kotlin 开发者,每天需要接触的就是 JVM 生态系的...

Day23 Methods (Ⅰ)

假如说要让程序重复执行的话,有二种方法:1.剪下贴上2.使用方法 是宣告一个函数的意思,int、vo...

[30天 Vue学好学满 DAY10] v-for 列表渲染

v-for 基於数组、物件透过迭代、遍历对前端进行渲染。 item in items items: ...

[烧烤吃到饱-2] 好好吃肉韩式烤肉吃到饱-台中公益店 #中秋节烤肉精选店家

这样的食材,才299吃到饱,别挑剔了啦~ 这家好好吃肉,就位在前几天分享过的「咕咕家」正对面。 好好...

Swift 新手-如何使用 Xcode 建立专案?记得先更新作业系统!

Xcode 安装 首先,先确认电脑是否可以安装 Xcode,目前在写这篇文章时是 Xcode 12....