要掌握 JavaScript 事件冒泡和捕获,你需要了解它们的基本概念、工作原理以及如何在代码中应用它们。以下是一些建议,帮助你更好地理解和掌握这两个概念:
基本概念
工作原理
addEventListener
方法为元素添加事件监听器,并指定事件处理函数。应用方法
stopPropagation
方法阻止事件冒泡,使用 stopImmediatePropagation
方法阻止同一元素上的其他事件监听器被调用。以下是一些示例代码,帮助你更好地理解事件冒泡和捕获:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Event Bubbling and Capturing</title>
<style>
div {
border: 1px solid black;
padding: 20px;
margin: 10px;
}
</style>
</head>
<body>
<div id="parent">
Parent
<div id="child">
Child
</div>
</div>
<script>
// 使用原生 JavaScript 添加事件监听器
document.getElementById('parent').addEventListener('click', function(event) {
console.log('Parent capturing');
}, true); // 使用捕获流模型
document.getElementById('parent').addEventListener('click', function(event) {
console.log('Parent bubbling');
}, false); // 使用冒泡流模型
document.getElementById('child').addEventListener('click', function(event) {
console.log('Child capturing');
}, true);
document.getElementById('child').addEventListener('click', function(event) {
console.log('Child bubbling');
}, false);
</script>
</body>
</html>
在这个示例中,我们创建了一个包含两个 div 元素的父元素。我们为这两个元素添加了点击事件监听器,分别使用捕获流模型和冒泡流模型。当你点击子元素时,事件会先触发子元素的捕获监听器,然后触发父元素的捕获监听器,接着触发子元素的冒泡监听器,最后触发父元素的冒泡监听器。