什么是事件委托
事件委托也叫事件代理,通俗易懂的说就是大家都会做的同一件事,找一个专门的人来做。例如生活中的菜鸟驿站就是事件委托的角色。
事件委托给程序的好处
1. 可以减少不必要的DOM操作,这对浏览器的性能有极大的好处。
2. 不用考虑未知的节点。
代码
<ul id="nav">
<li ></li>
<li ></li>
<li ></li>
<li ></li>
</ul>
<script>
var lis = document.querySelectorAll('#nav li'));
for(var li of Array.from(lis)){
lis.onclick = function(){
}
}
var querySelector = document.querySelector.bind(document);
function event (el,eventnName,fnc){
querySelector(el).addEventListener(eventnName,function(e){
var _this = e.target;
var brother = [];
var childNodes = this.childNodes = Array.from(this.childNodes);
arguments = Array.from(arguments);
for(var el of childNodes){
(el.nodeType == 1 ) && (el.isSameNode(_this) ? false : brother.push(el);)
}
if(typeof fnc == 'function'){
fnc.apply(_this,[this,brother].concat(arguments));
}
})
}
event('#nav','click',function(el,brother,e){
console.log(brother);
});
</script>