<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