JS添加事件和解綁事件:addEventListener()與removeEventListener()

作用:
  • addEventListener()removeEventListener()用于處理指定和刪除事件處理程序操作。
  • 它們都接受3個(gè)參數(shù):事件名、事件處理的函數(shù)和布爾值。
  • 布爾值參數(shù)是true,表示在捕獲階段調(diào)用事件處理程序;如果是false,表示在冒泡階段調(diào)用事件處理程序。
示例:
  • 環(huán)境:移動(dòng)端,界面禁止觸摸事件
  • 要在body上添加事件處理程序,可以使用下列代碼
document.body.addEventListener('touchmove', function (event) {
    event.preventDefault();
},false);

通過addEventListener()添加的事件處理程序只能使用removeEventListener()來移除;
移除時(shí),傳入的參數(shù)和添加處理的程序,需使用相同的參數(shù);
這也意味著通過addEventListener()添加的匿名函數(shù)無法移除;

  • 錯(cuò)誤用法示例:
document.body.addEventListener('touchmove', function (event) {
    event.preventDefault();
},false);
document.body.removeEventListener('touchmove', function (event) {
    event.preventDefault();
},false);

這個(gè)例子中,使用addEventListener()添加一個(gè)事件處理程序。
然后調(diào)用removeEventListener()移除事件,看起來好像使用了相同的參數(shù),但實(shí)際上第二個(gè)參數(shù),與傳入addEventListener()中的那一個(gè)是完全不同的函數(shù)。
所以傳入removeEventListener()中的事件處理程序函數(shù),必須與傳addEventListener()中的相同才可行。

  • 正確用法示例:
function bodyScroll(event){
    event.preventDefault();
}
document.body.addEventListener('touchmove',bodyScroll,false);
document.body.removeEventListener('touchmove',bodyScroll,false);

重寫后的這個(gè)例子沒有問題,是因?yàn)?code>addEventListener()和removeEventListener()中使用了同一個(gè)函數(shù)(也就是共用函數(shù))。

  • 共用函數(shù)不能帶參數(shù),錯(cuò)誤用法示例:
function bodyScroll(event){
    event.preventDefault();
}
document.body.addEventListener('touchmove',bodyScroll(event),false);
document.body.removeEventListener('touchmove',bodyScroll(event),false);
總結(jié):
  • 相同事件綁定和解除,需要使用共用函數(shù);
  • 共用函數(shù)不能帶參數(shù);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以下文章為轉(zhuǎn)載,對理解JavaScript中的事件處理機(jī)制很有幫助,淺顯易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy閱讀 3,174評論 1 10
  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔、瀏覽器、元素或與之相關(guān)的對象發(fā)...
    劼哥stone閱讀 1,334評論 3 11
  • 事件是一種異步編程的實(shí)現(xiàn)方式,本質(zhì)上是程序各個(gè)組成部分之間的通信。DOM支持大量的事件,本節(jié)介紹DOM的事件編程。...
    周花花啊閱讀 684評論 0 3
  • 辮兒媽閱讀 273評論 2 3
  • 拍攝技術(shù)不佳,有負(fù)這么美的天空,給熱愛大自然的你一起分享。還有一個(gè)飄滿棉花糖的天空的視頻,不會(huì)上傳,美美噠分享給每...
    清醒奇閱讀 809評論 0 2

友情鏈接更多精彩內(nèi)容