JS中的事件绑定、取消、兼容问题

一、事件绑定

1、on+事件类型

      var div = document.getElementById('dv')
      // 1 on+事件类型 (同一点击事件只能绑定一次,绑定多次以最后一次为准)
      div.onclick = () => {
        console.log('click1');
      }
      div.onclick = () => {
        console.log('click2');
      }

2、addEventListener(事件类型,事件处理函数)

// 2 addEventListener(事件类型,事件处理函数) 同一事件可绑定多个事件处理函数,从上往下执行
        // 低版本ie中不可用
      div.addEventListener('click',()=>{
        console.log('addEventListener1次');
      })
      div.addEventListener('click',()=>{
        console.log('addEventListener2次');
      })

3、attachEvent(on+事件类型,事件处理函数)

// 3 attachEvent(on+事件类型,事件处理函数)
        // 在ie11中,不支持
        // 在ie9/10中,支持,从上往下处理函数
        // 在ie8中,不支持也不反对,点击无反应
        // 在ie5/7中,支持,从下往上处理函数
      div.attachEvent('onclick',function(){
        console.log('attachEvent1次');
      })
      div.attachEvent('onclick',function(){
        console.log('attachEvent2次');
      })

4、封装兼容性的元素事件绑定

      // 封装兼容性的元素事件绑定
      function bindEvent(ele,type,fn) {
        try{
          ele.addEventListener(type,fn)
        }catch(error){
          ele.attachEvent('on'+type,fn)
        }
      }
      function f1(){console.log('f1');}
      function f2(){console.log('f2');}
      function f3(){console.log('f3');}
      function f4(){console.log('f4');}
      div.addEventListener('click',f1)
      div.addEventListener('click',f2)
      div.addEventListener('click',f3)
      div.addEventListener('click',f4)
      div.attachEvent('onclick',f3)
      div.attachEvent('onclick',f4)

5、取消绑定的事件函数

	  // 取消绑定的事件函数
      // removeEventListener(事件,处理函数)
      div.removeEventListener('click',f1) // 低版本ie不支持
      // detachEvent(事件,函数)
      div.detachEvent('onclick',f3)  // 低版本ie支持

6、取消绑定的事件函数(封装)

      // 封装兼容性的元素解除事件绑定
      function reEvent(ele,type,fn) {
        try{
          ele.removeEventListener(type,fn)
        }catch(error){
          ele.detachEvent('on'+type,fn)
        }
      }
      reEvent(div,'click',f1)

7、关于绑定的匿名事件函数
的人

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值