搜索

首页  >  问答  >  正文

javascript - 关于js原生事件的绑定与解除绑定

直接上代码

ele.addEventListener('click', function(e) {
    console.log(e)
})

这里我需要在一定的情况下对ele的click事件进行解除绑定的操作,但是在绑定的时候我需要使用额外的参数比如event,我该怎么解除绑定呢?

我知道removeEventListener可以解绑,但是他们要传入的那个函数必须是一个相同的具名外部函数,在我需要参数的情况下行不通了

我也知道在只需要绑定一个click事件的时候用ele.click = function() {}然后再用ele.click = null来解绑,或者使用其他工具库提供的方法.

但是现在我只想要知道就用removeEventListener来解除有没有可能

谢谢

巴扎黑巴扎黑2741 天前692

全部回复(2)我来回复

  • 淡淡烟草味

    淡淡烟草味2017-07-05 10:40:23

    这样就行,绑定和解绑的函数只要是指向同一个就ok

    function handler(e){
        //操作
        console.log(e)
    }
    ele.addEventListener('click', handler);//绑定
    ele.removeEventListener('click', handler);//解绑

    回复
    0
  • 高洛峰

    高洛峰2017-07-05 10:40:23

    function bindFunc(e) {
        console.log(e);
        //用参数e来进行一些操作,干啥都行
    }
    this.cusBindFunc = bindFunc.bind(this, e); //bind一下,因为remove的时候用的func必须和绑定的时候一样
    ele.addEventListener('click', this.cusBindFunc);//绑定事件
    ele.removeEventListener('click', this.cusBindFunc);//解绑

    另外为了兼容性,可以兼容一下attachEvent, detachEvent

    不知道我是否理解了你的问题@AugustEchoStone

    回复
    0
  • 取消回复