冒泡捕获流

  1. 句柄形式的点击事件 oBtn.onclick=function(){//只有事件冒泡,没有时间捕获}
  2. IE提出的事件冒泡流(Event Buttling
  3. Netscape提出的事件捕获流

事件流

事件流:事件捕获阶段、处于目标阶段、事件冒泡阶段

事件源的兼容性

  1. box.onclick=function(e){
  2. var e=e||window.event;
  3. var tar=e.target||e.srcElement;
  4. }

事件委托/事件代理

基本概念

事件代理(Event Delegation),又称为事件委托。是javaScript中常用绑定事件的常用技巧,‘事件代理’既是把原本需要绑定在子元素的响应事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。

  1. <ul>
  2. <li></li>
  3. <li></li>
  4. <ul>
  5. var oList=docuemnt.getElementsByTagName('ul')[0];
  6. oLi=docuemnt.getElementsByTagName('li')[0];
  7. //事件代理
  8. oList.onClick=function(e){
  9. var e=e||window.event,
  10. tar=e.target||e.srcElement;
  11. //此时的tar就是点击的那个<li></li>
  12. //获取目标对象的下标 这种方法不推荐
  13. //for(var i=0;i<len;i++){
  14. //item=oLi[i];
  15. //if(tar===item){
  16. // console.log(i)
  17. //}
  18. //}
  19. var index=Array.prototype.indexOf.call(oLi,tar);
  20. console.log(index)
  21. }