冒泡捕获流、事件与事件源对象、事件委托

事件流:描述从页面中接收事件的顺序 冒泡 捕获
IE提出的 事件冒泡流 (Event Bubbling)
Netscape 网景 事件捕获流 (Event Capturing)

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

事件对象 事件触发后的详细信息 里面有一个target srcElement 火狐只有target IE只有scrElment 谷歌两个都有

var target = e.target || e.srcElement;

事件代理,把原本要绑定的事件绑定到父元素上,原理是事件冒泡

var oUl = document.getElementsByTagName('ul')[0];
  oUl.onclick = function(e){
    var e = e || window.event,
        target = e.target || e.srcElement;
    console.log(target, target.innerText);
  }

事件代理如何拿下标

循环

 oUl.onclick = function(e){
    var e = e || window.event,
        target = e.target || e.srcElement;
    console.log(target, target.innerText);
  //  循环
    for(var i = 0; i < len; i++){
      item = oLi[i];
      if(target === item ){
        console.log('下标',i);
      }
    }
  }

通过Array.prototype.indexOf(),一般都是使用这种方法

var oUl = document.getElementsByTagName('ul')[0],
      oLi = oUl.getElementsByTagName('li'),
      len = oLi.length,
      item;
  oUl.onclick = function(e){
    var e = e || window.event,
        target = e.target || e.srcElement;
    console.log(target, target.innerText);
  // //  循环
  //   for(var i = 0; i < len; i++){
  //     item = oLi[i];
  //     if(target === item ){
  //       console.log('下标',i);
  //     }
  //   }
  //  Array.prototype.indexOf()
 // 类数组不能直接调用这个方法 所以要借用call改变this指向
    Array.prototype.indexOf.call(oLi, target);
  }

事件代理主要解决,多次重复的绑定事件处理函数
事件对象和事件源对象是事件代理的核心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值