事件冒泡流程
- 基于DOM树形结构
- 事件会顺着触发元素往上冒泡
- 应用场景:代理
手写通用事件绑定函数
function bindEvent(elem, type, selector, fn){
if(fn == null){
fn = selector;
selector = null;
}
elem.addEventListener(type, event => {
const target = event.target;
if(selector){
if(target.matches(selector)){
fn.call(target,event);
}
}
else {
fn.call(target,event);
}
})
}
const btn1 = document.getElementById('btn1');
bindEvent(btn1, 'click', function(event){
event.preventDefault();
alert(this.innerHTML);
})
const div3 = document.getElementById('div3');
bindEvent(div3, 'click', 'a', function(event){
event.preventDefault();
alert(this.innerHTML);
})