删除事件处理程序中的事件侦听器
您正在寻求一种解决方案,以从其自己的定义中删除事件侦听器。然而,由于 JavaScript 的事件处理机制,这并不是直接可行的。
一种方法是使用命名函数。通过创建命名函数并将其用作事件处理程序,您可以稍后通过引用其函数名称来删除事件侦听器。同时,应该在事件处理程序外部声明 click 变量,以方便其递增。
var click_count = 0; function myClick(event) { click_count++; if(click_count == 50) { canvas.removeEventListener('click', myClick); } } canvas.addEventListener('click', myClick);
或者,您可以使用闭包创建一个封装 click_count 变量的函数。这种方法使您能够跨多个元素递增计数器。
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);
最后,如果您希望每个元素都有自己的计数器,请考虑使用接受初始点击计数参数的匿名函数。
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中文网其他相关文章!