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 單表500W+數據,查詢超時,如何優化呢?2. python - Django分頁和查詢參數的問題3. 求大神幫我看看是哪里寫錯了 感謝細心解答4. MySQL客戶端吃掉了SQL注解?5. android - Windows系統下運行react-native App時,報下面的錯誤?6. javascript - 圖片能在網站顯示,但控制臺仍舊報錯403 (Forbidden)7. php自學從哪里開始?8. mysql - AttributeError: ’module’ object has no attribute ’MatchType’9. javascript - JS設置Video視頻對象的currentTime時出現了問題,IE,Edge,火狐,都可以設置,反而chrom卻...10. phpstady在win10上運行
