(1)事件冒泡。在一个对象上触发某类事件(比如单击onclick事件),如果该对象定义了此类事件的处理程序,那么此事件就会调用这个处理程序;如果没有定义此事件的处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的顶层,即document对象(有些浏览器是window)。
(2)事件委托的实现方法。通俗地讲,onclick,onmouseover,onmouseout等就是事件。而委托,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,以完成这个事件。也就是说:利用冒泡的原理,把事件加到父级上,触发执行效果。
(3)事件委托的原理。事件委托,其实从名字上就很好理解,就是自己的事件交给别人去做,即将事件委托给别人。
(4)事件委托的优点。比如有很多li元素,我们想为每一个li元素注册一个单击事件,当然你可以将每个元素挨个进行注册,但是如果有100个或者更多个li元素的话,这绝对是一项海量的工作,如果我们利用冒泡的原理,将事件委托给li元素的父级元素处理,那么无论有多少个li元素,都能够轻松搞定。
例如:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" /> <title></title> <style type="text/css"> ul{ list-style:none; } </style> <script type="text/javascript"> window.οnlοad=function(){ var obox=document.getElementById("box"); var oshow=document.getElementById("show"); obox.οnclick=function(ev){ var ev=ev||window.event; var target=ev.target||ev.srcElement; oshow.innerHTML=target.innerHTML; } } </script> </head> <body> <div id="show"></div> <ul id="box"> <li>一</li> <li>二</li> <li>三</li> <li>四</li> </ul> </body> </html>