先看一个单击事件案例:
<style>
.nav{
width:200px;
height:200px;
background: skyblue;
cursor: pointer;
}
p{ cursor: pointer; }
</style>
<script>
window.οnlοad=function () {
var nav=document.getElementsByClassName('nav')[0];
var p1=document.getElementById('p1');
p1.addEventListener('click',function () {
alert('段落被单击了!')
});
nav.addEventListener('click',function () {
alert('div被单击了!')
})
}
</script>
</head>
<body>
<div class="nav">
<p id="p1">捕获和冒泡的演示</p>
</div>
</body>
在这个例子中,如果单击文字,先提示‘段落被单击了!’,然后再提示“div被单击了!”。那是因为div是段落的父容器,所以单击段落也就单击了div,所以点击段落会触发两个事件。
但是如何去规定两个事件的处理顺序呢?这就是需要用到时间的捕获和冒泡。
冒泡:按照从内到外的顺序依次触发,这是默认的方式。
捕获:与冒泡相反。
标注:之前说的JavaScript事件中onmouseenter和onmouseover非常的相似,但是她们的唯一区别就是onmouseenter不支持事件的冒泡。