javascript - 關(guān)于js原生事件的綁定與解除綁定
問(wèn)題描述
直接上代碼
ele.addEventListener(’click’, function(e) { console.log(e)})
這里我需要在一定的情況下對(duì)ele的click事件進(jìn)行解除綁定的操作,但是在綁定的時(shí)候我需要使用額外的參數(shù)比如event,我該怎么解除綁定呢?
我知道removeEventListener可以解綁,但是他們要傳入的那個(gè)函數(shù)必須是一個(gè)相同的具名外部函數(shù),在我需要參數(shù)的情況下行不通了
我也知道在只需要綁定一個(gè)click事件的時(shí)候用ele.click = function() {}然后再用ele.click = null來(lái)解綁,或者使用其他工具庫(kù)提供的方法.
但是現(xiàn)在我只想要知道就用removeEventListener來(lái)解除有沒有可能
謝謝
問(wèn)題解答
回答1:這樣就行,綁定和解綁的函數(shù)只要是指向同一個(gè)就ok
function handler(e){ //操作 console.log(e)}ele.addEventListener(’click’, handler);//綁定ele.removeEventListener(’click’, handler);//解綁回答2:
function bindFunc(e) { console.log(e); //用參數(shù)e來(lái)進(jìn)行一些操作,干啥都行}this.cusBindFunc = bindFunc.bind(this, e); //bind一下,因?yàn)閞emove的時(shí)候用的func必須和綁定的時(shí)候一樣ele.addEventListener(’click’, this.cusBindFunc);//綁定事件ele.removeEventListener(’click’, this.cusBindFunc);//解綁
另外為了兼容性,可以兼容一下attachEvent, detachEvent
不知道我是否理解了你的問(wèn)題@AugustEchoStone
相關(guān)文章:
1. lucene - java web 現(xiàn)在做搜索功能,用什么比較好呢2. vue.js - npm run dev報(bào)錯(cuò)了,不知道是不是node.js或者npm installed的版本問(wèn)題3. 求救一下,用新版的phpstudy,數(shù)據(jù)庫(kù)過(guò)段時(shí)間會(huì)消失是什么情況?4. PHP類屬性聲明?5. javascript - vue引入微信jssdk 配置在哪個(gè)生命周期調(diào)取接口配置?6. javascript - 這種效果是輪播的效果嗎??沒有思路,求解釋。謝謝大家7. objective-c - ios百度地圖定位問(wèn)題8. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤9. php laravel框架模型作用域10. 在應(yīng)用配置文件 app.php 中找不到’route_check_cache’配置項(xiàng)
