【发布时间】:2020-01-05 21:54:04
【问题描述】:
我正在使用以下侦听器来侦听移动设备上的滑动和触摸事件。它具有以下签名:
$.fn.onSwipe = function(handlers) { // adding a jQuery prototype.
my_element.addEventListener('touchmove', function(event) {
handleSwipe(event, handlers.left, handlers.right, handlers.up, handlers.down);
});
}
我喜欢这个,因为它允许我:
$("foo").onSwipe({
left: (event) => { ... }, // I can define this right here.
right: (event) => { ... },
up: (event) => { ... },
down: (event) => { ... },
})
对于left、right等,我可以在分配监听器的范围内定义函数,同时还能在监听器中看到事件。
我尝试在我的方向处理程序中执行event.preventDefault,但这仍然会阻止滚动(我想通过删除事件侦听器来启用)。
问题:
- 我无法删除该事件,因为它是匿名的。
- 我不知道如何创建一个命名函数,同时能够以相同的方式传递它,以便
addEventListner将event和方向处理程序(如handlers.left())传递给我的@987654329 @事件。
注意:我对使用其他第三方库不感兴趣。
【问题讨论】:
-
“我无法删除该事件,因为它是匿名的。”您只需要对该函数的引用 - 它是否有名称无关紧要。
标签: javascript anonymous-function