我有一个检查用户名的函数。当按下Enter键时,用户名将被调用到localstorage,之后,我希望eventListener停止。由于某种原因,它不起作用,我无法弄清楚为什么!
$(function () {
$(".drag").draggable({
revert: "invalid",
});
$("#eclairArea").droppable({
accept: '#eclair'
});
$("#donutArea").droppable({
accept: '#donut'
});
});
有什么想法吗?
答案 0 :(得分:2)
removeEventListener
的第二个参数需要您要删除的功能。
您传递的是新功能,它与您要移除的功能完全相同。
这应该做的工作:
window.addEventListener("keypress", checkUserName);
window.removeEventListener("keypress", checkUserName);
答案 1 :(得分:1)
语法()=>{}
创建一个新函数。因此,您将通过双箭头语法创建的两个不同的匿名函数传递给addEventListener
和removeEventListener
,而它们应该是相同的。你可以这样解决:
const fn = event => checkUserName(event);
window.addEventListener("keypress", fn );
window.removeEventListener("keypress", fn);
但由于外部函数与内部函数的作用相同,因此可以跳过它:
window.addEventListener("keypress", checkUserName);
window.removeEventListener("keypress", checkUserName);