javascript - Javascript阻止函数调用
问题描述
function alertOuter() {
alert("outer alert")
}
function alertInner() {
alert("inner alert")
return
}
<div onclick="alertOuter()" style="padding:20px;background:red;">
<h1>Outer</h1>
<br/>
<button onclick="alertInner()">Inner</button>
</div>
我有两个关于onclick
事件的函数调用。
我想alertOuter
在单击按钮时阻止功能。但是,当我单击按钮时,它会调用这两个函数。
alertOuter
当单击按钮只想调用函数时,我想阻止该alertInner()
函数
我怎样才能做到这一点?
解决方案
使用 Javascript 正确附加事件侦听器,以便您可以看到事件参数,然后调用stopPropagation()
事件,因此它不会冒泡到包含<div>
:
document.querySelector('button').addEventListener('click', (e) => {
e.stopPropagation();
console.log('inner');
});
document.querySelector('div').addEventListener('click', () => {
console.log('outer');
});
<div style="padding:20px;background:red;">
<h1>Outer</h1>
<br/>
<button>Inner</button>
</div>
最好避免内联处理程序,它们具有令人困惑的行为,需要全局污染,并且几乎从不需要。
推荐阅读
- java - 如何使用 Undertow 在 Spring-boot 中取消未完成的、长时间运行的请求?
- r - 可靠地检索分位数函数的倒数
- excel-formula - 计算通过匹配创建的范围内的文本字符串
- c# - 如何固定向右和向左移动?
- java - Mandelbrot 集的可视化表示
- javascript - 如何使用 chart.js 偏移 x 和 y 轴网格点和标签?
- python - 如何删除“baca”或从 html 中读取?
- javascript - 返回一个空数组而不是 null
- canvas - 在带有画布的框架中使用 grid.columnconfigure
- javascript - 在单独的文件中指定路线时无法找到路线