浅谈事件绑定与事件委托机制

事件绑定与事件委托机制

事件绑定顾名思义则是在元素标签上绑定相应的行为事件。事件委托也就是说,自身元素的行为事件交由其他父类元素去监管实现。具体js代码我们可以看下面代码实现,

来帮助初学者彻底了解什么是事件绑定与委托。

 

结构层(HTML)

<ul calss="parent">

  <li class="child"></li>

  <li class="child"></li>

  <li class="child"></li>

  <li class="child"></li>

</ul>

行为层(JavaScript 本文采用ES5标准编写)

(function(){ 

//简单的事件委托工具,未考虑IE6下的兼容性,仅供理解委托事物

window.EventUtil = {
  hadelrs:{},
    on:function(dom,dom1,event,fn){
    //判断是否存在委托,不存在则创建一个dom1的委托事件函数池
    if(this.hadelrs[dom1] ){
      this.hadelrs[dom1] .push(fn);
    } else {
      this.hadelrs[dom1] = [fn];
    } 
    //监听受委托的dom根据对应的事件触发对象,来触发dom1事件函数
    document.querySelector( dom) .addEventListener(event, function(evn){
      //判断 事件触发是否来源于委托 元素dom1
      if(evn.target == document.querySelector(dom1)) {
        for(var i in EventUtil.hadelrs[dom1]){
          try {
            EventUtil.hadelrs[dom1][i]( event); //执行事件函数
          } catch(err){
            console.warn(err);
          }
        }
      }
    } )
  },
  off: function(dom1,fn){
    if(EventUtil.hadelrs[dom1]){
      for(var i in EventUtil.hadelrs[dom1]){
        if(EventUtil.hadelrs[dom1][i] == fn){
          EventUtil.hadelrs[dom1].splice(i,1);  //事件函数池移除事件
          breack;
        }
     }
    }
  }
}}())
 
//调用实现
EventUtil.on('.parent','.parent li',click,function(e){console.log('----------li--------')})
 

转载于:https://www.cnblogs.com/zerox-cn/p/6074496.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值