通用的事件绑定函数 发表于 2020-04-06 | 分类于 面试题 | 实现事件绑定、事件委托一体化的通用的事件绑定函数。 123456789101112131415161718192021222324252627282930313233function 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) { // console.log(event.target) // 获取触发的元素 event.preventDefault() // 阻止默认行为 alert(this.innerHTML)})// 代理绑定const div3 = document.getElementById('div3')bindEvent(div3, 'click', 'a', function (event) { event.preventDefault() alert(this.innerHTML)})