javascript中的事件委托(代理)
2017-09-05 14:53
441 查看
—–事件委托的原理用到的就是事件冒泡和目标元素,把事件处理器添加到父元素,等待子元素事件冒泡,并且父元素能够通过target(IE为srcElement)判断是哪个子元素,从而做相应处理。
传统的事件处理:
事件委托
事件委托的优点:
1.管理的函数变少了。不需要为每个元素都添加监听函数。对于同一个父节点下面类似的子元素,可以通过委托给父元素的监听函数来处理事件。
2.可以方便地动态添加和修改元素,不需要因为元素的改动而修改事件绑定。
3.JavaScript和DOM节点之间的关联变少了,这样也就减少了因循环引用而带来的内存泄漏发生的概率
传统的事件处理:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> </ul> </body> </html> <script> (function () { var oli = document.getElementsByTagName("li"); for (var i = 0; i < oli.length; i++) { oli[i].addEventListener("click",showCon,false); } function showCon() { console.log(this.innerHTML); } })() </script>
事件委托
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> </ul> </body> </html> <script> (function(){ var oul = document.getElementsByTagName("ul")[0]; oul.addEventListener('click',showCon,false); function showCon(e) { e=e||window.event; var targetElement=e.target||e.srcElement; if(targetElement.nodeName.toLowerCase()==="li"){ console.log(targetElement.innerHTML); } } })(); </script>
事件委托的优点:
1.管理的函数变少了。不需要为每个元素都添加监听函数。对于同一个父节点下面类似的子元素,可以通过委托给父元素的监听函数来处理事件。
2.可以方便地动态添加和修改元素,不需要因为元素的改动而修改事件绑定。
3.JavaScript和DOM节点之间的关联变少了,这样也就减少了因循环引用而带来的内存泄漏发生的概率
相关文章推荐
- 理解JavaScript中的事件路由冒泡过程及委托代理机制
- js---JavaScript中的事件委托/事件代理,如何通过事件委托进行异步DOM事件监听
- javascript中的事件委托或是事件代理详解
- javascript 事件委托(代理)
- JavaScript事件代理和委托(Delegation)
- 理解JavaScript中的事件路由冒泡过程及委托代理机制
- javascript事件委托,事件代理,元素绑定多个事件之练习篇
- 极简略介绍 javascript 事件代理(事件委托)
- 理解JavaScript中的事件路由冒泡过程及委托代理机制
- 【web前端】关于javaScript事件代理,委托
- 理解JavaScript中的事件路由冒泡过程及委托代理机制
- JavaScript事件代理和委托(Delegation)
- javaScript中的事件代理与委托
- JavaScript的事件代理和委托实例分析
- JavaScript事件代理和委托(Delegation)
- JavaScript事件代理和委托(Delegation)
- 从零开始学_JavaScript_系列(31)——事件代理/事件委托
- JavaScript事件代理和委托(Delegation)
- JavaScript事件代理和委托(Delegation)
- 理解JavaScript中的事件路由冒泡过程及委托代理机制