当进行事件触发时(eg:onclick),事件会往自身上面传递。
即:当一个动作触发多个事件时(点击box的动作,会触发box绑定的onclick事件,也会触发document上的onclick事件),此时会触发两个事件。
阻止冒泡,即可只触发box上的一个事件。(e.cancelBubble = true;)
具体事例
1.实现目标:一个按钮,点击后会出现一个列表。
选择列表中一个时,列表不消失。
点击其他时,列表消失。
2.
<div id="box">
<p id="p">点我</p>
<ul id="ul">
<li>菜鸟在路上</li>
<li>灰灰</li>
<li>-C</li>
<li>黑胡椒</li>
<li>可乐</li>
<li>xiaoleung</li>
<li>永无止境</li>
</ul>
</div>
box.onclick=function (e) {
e=e||window.event;
ul.style.display = "block";
e.cancelBubble = true;//阻止冒泡,使列表不消失
}
document.onclick=function () {
ul.style.display = "none"
}