当事件发生的时候,如果想要阻挡事件向上传递,只要利用「事件物件」(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 的原因 身为一位 Kotlin 开发者,每天需要接触的就是 JVM 生态系的...
假如说要让程序重复执行的话,有二种方法:1.剪下贴上2.使用方法 是宣告一个函数的意思,int、vo...
v-for 基於数组、物件透过迭代、遍历对前端进行渲染。 item in items items: ...
这样的食材,才299吃到饱,别挑剔了啦~ 这家好好吃肉,就位在前几天分享过的「咕咕家」正对面。 好好...
Xcode 安装 首先,先确认电脑是否可以安装 Xcode,目前在写这篇文章时是 Xcode 12....