2. 什么事冒泡,什么事捕获,什么是事件流
时间: 2023-12-24 14:49:33 浏览: 35
在Web开发中,事件流是指当发生某个事件时,它会在DOM元素中按照特定的顺序传递,这个过程称为事件流。
事件流分为冒泡和捕获两种方式。
当一个事件发生在某个DOM元素上时,它会首先在祖先元素中按照从外到内的顺序进行捕获,直到达到目标元素。然后,它会在目标元素上触发,最后在祖先元素中按照从内到外的顺序进行冒泡。
事件流的过程可以用下面的代码来表示:
```html
<!DOCTYPE html>
<html>
<head>
<title>事件流</title>
</head>
<body>
<div id="outer">
<div id="inner">
<p id="paragraph">点击我</p>
</div>
</div>
<script>
var outer = document.getElementById('outer');
var inner = document.getElementById('inner');
var paragraph = document.getElementById('paragraph');
outer.addEventListener('click', function() {
console.log('outer capture');
}, true);
inner.addEventListener('click', function() {
console.log('inner capture');
}, true);
paragraph.addEventListener('click', function() {
console.log('paragraph capture');
}, true);
paragraph.addEventListener('click', function() {
console.log('paragraph bubble');
}, false);
inner.addEventListener('click', function() {
console.log('inner bubble');
}, false);
outer.addEventListener('click', function() {
console.log('outer bubble');
}, false);
</script>
</body>
</html>
```
点击段落元素时,会按照以下顺序触发事件:
1. 外层div的捕获事件(outer capture)
2. 内层div的捕获事件(inner capture)
3. 段落元素的捕获事件(paragraph capture)
4. 段落元素的冒泡事件(paragraph bubble)
5. 内层div的冒泡事件(inner bubble)
6. 外层div的冒泡事件(outer bubble)
事件流的特点是:事件从最外层元素开始向目标元素传递,然后再从目标元素向外层元素传递。