JavaScript 核心基础事件处理:绑定方式与事件冒泡
事件处理是交互逻辑的核心,需掌握不同绑定方式的区别,以及事件冒泡的原理与控制。
1. 事件绑定的 2 种方式:覆盖 vs 多播
方式 1:onclick 直接绑定(会覆盖)
特点:同一元素多次绑定同一事件,后绑定的会覆盖前绑定的,最终只有最后一个事件生效。
示例:
var btn = document.querySelector(“#btn”);
// 第一个事件:被覆盖,不生效
btn.onclick = function() {
alert(“第一个点击事件”);
};
// 第二个事件:覆盖第一个,最终生效
btn.onclick = function() {
alert(“第二个点击事件”);
};
方式 2:addEventListener 绑定(多播,不覆盖)
特点:同一元素多次绑定同一事件,所有事件按绑定顺序依次执行,不会覆盖(称为“多播事件委托”)。
示例:
var btn = document.querySelector(“#btn”);
// 第一个事件:正常执行
btn.addEventListener(“click”, function() {
alert(“第一个点击事件”);
});
// 第二个事件:在第一个之后执行
btn.addEventListener(“click”, function() {
alert(“第二个点击事件”);
});
2. 事件冒泡:从子元素到父元素的事件传播
原理
当元素触发事件(如点击)时,事件会从“最内层子元素”向“最外层父元素”逐级传播,这一过程称为“事件冒泡”。
示例场景:div 包裹 form,form 包裹按钮,三者均绑定点击事件:
<div id=”parent”>
<form id=”child”>
<button id=”btn”>点击</button>
</form>
</div>
<script>
window.onload = function() {
// 按钮点击事件(最内层)
document.querySelector(“#btn”).addEventListener(“click”, function() {
alert(“按钮事件”);
});
// form 点击事件(中间层)
document.querySelector(“#child”).addEventListener(“click”, function() {
alert(“form 事件”);
});
// div 点击事件(最外层)
document.querySelector(“#parent”).addEventListener(“click”, function() {
alert(“div 事件”);
});
};
</script>
执行顺序:点击按钮后,依次弹出“按钮事件”→“form 事件”→“div 事件”(从内到外传播)。
阻止事件冒泡
若需避免父元素事件触发,可通过事件对象的 stopPropagation()
方法阻止冒泡:
document.querySelector(“#btn”).addEventListener(“click”, function(e) {
alert(“按钮事件”);
e.stopPropagation(); // 阻止事件向上传播,父元素事件不再执行
});
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » JavaScript 核心基础事件处理:绑定方式与事件冒泡