<div id="div1"> <a href="#">a1</a> <a href="#">a2</a> <a href="#"> a3</a> <a href="#">a4</a> </div> <button> 点击增长一个 a 标签 </button>
若是给每一个 <a>
标签一一都绑定一个事件,那对于内存消耗是很是大的。借助事件代理,咱们只须要给父容器div绑定方法便可,这样无论点击的是哪个后代元素,都会根据冒泡传播的传递机制,把父容器的click行为触发,而后把对应的方法执行,根据事件源,咱们能够知道点击的是谁,从而完成不一样的事。node
var div1 = document.getElementById('div1') div1.addEventListener('click', function (e) { // e.target 能够监听到触发点击事件的元素是哪个 var target = e.target if (e.nodeName === 'A') { // 点击的是 <a> 元素 alert(target.innerHTML) } })
最后,使用代理的优势以下:浏览器
使代码简洁性能优化
减小浏览器的内存占用dom