删除EventListener不起作用 - Javascript

时间:2017-01-05 11:11:31

标签: javascript

我有一个检查用户名的函数。当按下Enter键时,用户名将被调用到localstorage,之后,我希望eventListener停止。由于某种原因,它不起作用,我无法弄清楚为什么!

$(function () {
  $(".drag").draggable({
    revert: "invalid",
  });

  $("#eclairArea").droppable({
    accept: '#eclair'
  });

  $("#donutArea").droppable({
    accept: '#donut'
  });
});

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

removeEventListener的第二个参数需要您要删除的功能

您传递的是新功能,它与您要移除的功能完全相同。

这应该做的工作:

window.addEventListener("keypress", checkUserName);
window.removeEventListener("keypress", checkUserName);

答案 1 :(得分:1)

语法()=>{}创建一个新函数。因此,您将通过双箭头语法创建的两个不同的匿名函数传递给addEventListenerremoveEventListener,而它们应该是相同的。你可以这样解决:

const fn =  event => checkUserName(event);
window.addEventListener("keypress", fn );
window.removeEventListener("keypress", fn);

但由于外部函数与内部函数的作用相同,因此可以跳过它:

window.addEventListener("keypress", checkUserName);
window.removeEventListener("keypress", checkUserName);
相关问题