1:关于事件冒泡
事件冒泡 :当一个元素接收到事件的时候 会把他接收到的事件传给自己的父级,一直到window 。(注意这里传递的仅仅是事件 并不传递所绑定的事件函数。所以如果父级没有绑定事件函数,就算传递了事件 也不会有什么表现 但事件确实传递了。)
2:如何避免冒泡
1: 使用 event.cancelBubble=true;
<div class="box1" id="box1" onclick="change_cong(2)" >
<div class="box2" id="box2" onclick="click_mute(2);event.cancelBubble=true;">
</div>
</div>
2: 使用jq处理
$("#box2").click(function(event){
event.stopPropagation();
//或者是:
// return false;
});
注:这两种方式是有区别的。return false; 不仅阻止了事件往上冒泡,而且阻止了事件本身。event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身。
冒泡还有一大优点,就是事件委托,而且经常用到,还能提高很大的性能,详情见:https://www.cnblogs.com/vickylinj/p/14197645.html及 https://www.cnblogs.com/vickylinj/p/10940067.html