javascript - 关于js原生事件的绑定与解除绑定
问题描述
直接上代码
ele.addEventListener(’click’, function(e) { console.log(e)})
这里我需要在一定的情况下对ele的click事件进行解除绑定的操作,但是在绑定的时候我需要使用额外的参数比如event,我该怎么解除绑定呢?
我知道removeEventListener可以解绑,但是他们要传入的那个函数必须是一个相同的具名外部函数,在我需要参数的情况下行不通了
我也知道在只需要绑定一个click事件的时候用ele.click = function() {}然后再用ele.click = null来解绑,或者使用其他工具库提供的方法.
但是现在我只想要知道就用removeEventListener来解除有没有可能
谢谢
问题解答
回答1:这样就行,绑定和解绑的函数只要是指向同一个就ok
function handler(e){ //操作 console.log(e)}ele.addEventListener(’click’, handler);//绑定ele.removeEventListener(’click’, handler);//解绑回答2:
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
相关文章:
1. mysql - 查询字段做了索引为什么不起效,还有查询一个月的时候数据都是全部出来的,如果分拆3次的话就没问题,为什么呢。2. DADB.class.php文件的代码怎么写3. mysql sql where id in(25,12,87) 结果集如何用按照 25 12 87排序?4. javascript - 在js for in 循环中,使用数组的push方法获取对象的属性,结果却未改变数组5. 腾讯地图小程序SDK,success返回的数据无法取出6. 就一台服务器,mysql数据库想实现自动备份,如何设计?7. Mysql 关于 FOUND_ROWS() 和 ROW_COUNT() 函数8. Win8资源管理器总是卡死该咋办?9. mysql - 请教一条sql10. javascript - h5分享链接到qq或者微信时有一个缩略图还有一些说明文字,这个要怎么去修改里面的图片和内容?