删除定义内的 JavaScript 事件监听器
在 JavaScript 中使用事件监听器时,可能存在需要删除监听器的情况来自另一个侦听器的定义。当满足特定条件(例如达到特定点击次数)时,可能会出现这种情况。
解决方案:
要删除其自身定义内的事件侦听器,您可以可以利用命名函数。不要将匿名函数分配给 addEventListener() 方法,而是创建一个命名函数并将其作为第二个参数传递。
var click_count = 0; function myClick(event) { click_count++; if (click_count == 50) { canvas.removeEventListener('click', myClick); } } canvas.addEventListener('click', myClick);
在此示例中,myClick 是分配给 addEventListener() 方法的命名函数。当点击事件被触发时,myClick 函数会递增 click_count 变量。如果计数达到 50,则使用removeEventListener() 删除侦听器。
替代方法:
如果需要使用匿名函数或关闭点击计数器变量,您可以创建一个闭包。闭包允许内部函数从其外部作用域访问变量,即使在外部函数完成执行之后也是如此。
var myClick = (function(click_count) { var handler = function(event) { click_count++; if (click_count == 50) { canvas.removeEventListener('click', handler); } }; return handler; })(0); canvas.addEventListener('click', myClick);
这里,myClick 函数创建了一个内部闭包,它封装了处理函数和 click_count 变量.
多个监听器:
如果您需要添加多个监听器计数器,您可以创建一个高阶函数,生成一个带有自己的计数器的新函数。
var myClick = function(click_count) { var handler = function(event) { click_count++; if (click_count == 50) { canvas.removeEventListener('click', handler); } }; return handler; }; canvas.addEventListener('click', myClick(0));
以上是如何从 JavaScript 事件监听器自己的定义中删除它们?的详细内容。更多信息请关注PHP中文网其他相关文章!