<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件代理通用</title>
</head>
<body>
<div id="div1">
wooooooooooooooooooooooo
<a href="#1" id="a1">1</a>
<a href="#2">2</a>
<a href="#3">3</a>
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<script>
function bind(ele,type,selector,fn){
if(fn==null){
fn=selector;
selector=null;
}
// 传入元素只有一个
if(ele.length==null){
ele.addEventListener(type,function(e){
var target;
// 代理
if(selector){
target=e.target;
if(target.matches(selector)){
fn.call(target,e)
}
// 非代理
}else{
fn.call(ele,e)
}
})
}else{
// 传入为一个集合
for(let i=0;i<ele.length;i++){
ele[i].addEventListener(type,function(e){
// 代理
if(selector){
let target=ele[i].target;
if(target.matches(selector[i])){
fn.call(target[i],e)
}
// 非代理
}else{
console.log(this)
fn.call(ele[i],e)
}
})
}
}
}
// 代理
var div1=document.getElementById('div1');
var a=div1.getElementsByTagName('a');
// var a=document.getElementById('a1')
// bind(div1,'click','a',function(e){
// e.preventDefault();
// console.log(this)
// })
// 非代理
bind(a,'click',function(e){
e.preventDefault();
console.log(this)
})
</script>
</html>