如何删除事件监听器?

时间:2016-04-26 13:41:50

标签: javascript jquery

以下是我的事件监听器代码

window.addEventListener("beforeunload", function (e) {
        if(sessionStorage.token != "abide" )  {
          // call api
        }
});

如果我想删除此事件监听器该怎么办?

代码是否正常工作?

window.removeEventListener("before unload");

1 个答案:

答案 0 :(得分:12)

要删除事件侦听器,您的事件处理函数必须是外部命名函数,而不是匿名(您需要对其进行引用)功能):

window.addEventListener("beforeunload", functionToRun);

function functionToRun(e){
     if(sessionStorage.token != "abide" ){
        // call api
     }
}
window.removeEventListener("beforeunload",functionToRun);

<小时/> 备用:您也可以使用引用该匿名函数的 arguments.callee 在匿名函数调用中删除它。
ex:

var button=document.getElementById('button');

button.addEventListener('click',function(e){

   //some code to be runned       
  this.removeEventListener('click', arguments.callee);

});

注意:您的事件处理函数必须被触发一次,以便以上述方式将其删除。

&#13;
&#13;
var button = document.getElementById('button');

button.addEventListener('click', function(e) {

  alert('clicked');

  this.removeEventListener('click', arguments.callee);
});
&#13;
<button id="button">click</button>
&#13;
&#13;
&#13;