事件冒泡的工作原理、阻止事件冒泡的流程以及默认行为

366 阅读1分钟

事件冒泡的工作流程

在一个对象上触发某类事件(比如单击 onclick 事件),这个事件会向这个对象的父级对象

传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次

的最顶层,即 document 对象(有些浏览器是 window)

2、阻止事件冒泡的方法

2.1)w3c 方法是:event.stopPropagation(); 事件处理过程中,阻止冒泡事件,但不会阻止默

认行为(跳转至超链接)

2.2)IE 则是使用 event.cancelBubble = true 阻止事件冒泡

2.3)return false; jq 里面事件处理过程中,阻止冒泡事件,也阻止默认行为(不跳转超

链接)

封装方法:

function bubbles(e){

var ev = e || window.event;

if(ev && ev.stopPropagation) {

//非 IE 浏览器

ev.stopPropagation();

} else {
//IE 浏览器(IE11 以下)

ev.cancelBubble = true;

}

console.log("最底层盒子被点击了")

}

阻止默认行为

w3c 的方法是 e.preventDefault(),IE 则是使用 e.returnValue = false;

封装:

//假定有链接<a href="http://caibaojian.com/" id="testA" >caibaojian.com</a>

var a = document.getElementById("testA");

a.onclick =function(e){

if(e.preventDefault){

e.preventDefault();

}else{

window.event.returnValue == false;

}

}