事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。
<!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> </head> <body> <div id = "div1"> <a href = "http..." id = "link1">某连接</a> <a href = "http..." id = "link2">某连接</a> <a href = "http..." id = "link3">某连接</a> <a href = "http..." id = "link4">某连接</a> <p id = "p1">激活</p> <p id = "p2">取消</p> </div> <div id = "div2"> <p id = "p3">取消</p> <p id = "p4">取消</p> </div> <script type="text/javascript"> //基本事件绑定 // var bth = document.getElementById('btn1') // bth.addEventListener('click', function (event) { // console.log('clicked') // }) //事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 //封装绑定函数 function bindEvent(elem, type, fn) { elem.addEventListener(type, fn) } var div1 = document.getElementById('div1') bindEvent(div1, 'click', function(e) { e.preventDefault() //阻止默认行为 alert('clicked') }) //冒泡事件 var p1 = document.getElementById('p1') bindEvent(p1, 'click', function(e) { e.stopPropagation() alert('激活') }) var body = document.body bindEvent(body, 'click', function(e) { alert('取消') }) //事件代理 </script> </body> </html>
事件代理实例,选项卡
<!DOCTYPE html> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{margin:0;padding:0;} </style> </head> <body> <ul id= "mylist"> <li id="list1">1</li> <li id="list2">2</li> <li id="list3">3</li> <li id="list4">4</li> <li id="list5">5</li> </ul> </body> </html> <script type="text/javascript"> var list = document.getElementById('mylist'); var listchild= document.getElementsByTagName('li'); for(var i=0; i<listchild.length; i++) { listchild[i].addEventListener('click', function() { this.style.background = 'red'; }) } </script>
绑定不同事件
<!DOCTYPE html> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> *{margin:0;padding:0;} </style> </head> <body> <ul id= "mylist"> <li id="list1">1</li> <li id="list2">2</li> <li id="list3">3</li> <li id="list4">4</li> <li id="list5">5</li> </ul> </body> </html> <script type="text/javascript"> var list = document.getElementById('mylist'); list.addEventListener('click', function(event) { event = event || window.event; var target = event.target || event.srcElement; switch(target.id) { case "list1" : alert('list1'); break; case "list2" : alert('list2'); break; case "list3" : alert('list3'); break; case "list4" : alert('list4'); break; case "list5" : alert('list5'); break; } }); </script>
<!DOCTYPE html> <html> <head> <meta charset=utf-8" /> </head> <body> <table id="table1"> <tr><td>1</td></tr> <tr><td>2</td></tr> <tr><td>3</td></tr> </table> </body> </html> <script type="text/javascript"> function bindEvent(elem,type,fn){ elem.addEventListener(type,fn) } var table1 = document.getElementById("table1") bindEvent(table1,'click',function(e){ alert(e.target.innerText); }) </script>