一、定义
事件冒泡:IE的事件流,即事件开始时由最具体的元素(文档嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(document)。
事件捕获:是不具体的节点更早接收到事件,而具体的节点应该最后接收到事件。
二、实例
<!DOCTYPE html>
<html onclick="console.log('c')">
<head>
<meta charset="UTF-8" />
<title>demo</title>
</head>
<body onclick="console.log('b')">
<div id="myDiv" onclick="console.log('a')">click me</div>
<script>
document.onclick = function () {
console.log('d')
}
</script>
</body>
</html>
点击元素 myDiv 的运行结果如下:
三、总结
事件冒泡:click事件会沿着DOM树向上传播(myDiv -> body -> html -> document),在每一级节点上都会发生,直至传播到document对象。IE9、Firefox、Chrome和Safari会将事件一直冒泡到window对象。
事件捕获:document对象首先接收到click事件,然后事件沿DOM树依次向下,一直传播到事件的实际目标div(document -> html -> body -> myDiv)