JavaScript:删除事件侦听器 [英] JavaScript: remove event listener

查看:160
本文介绍了JavaScript:删除事件侦听器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  canvas.addEventListener('click', function(event){
click ++;
if(click == 50){
//在此处删除此事件侦听器
}
//这里有更多的代码。

我该怎么做?= = ...
谢谢。

解决方案

您需要使用命名函数。



另外,
函数myClick(event){
click_count ++;
if(click_count == 50){
//删除
canvas.removeEventListener ('click',myClick);
}
}

//添加
canvas.addEventListener('click',myClick);






编辑: code> click_cou nter 这样的变量:

  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);

这样,您可以跨多个元素递增计数器。






如果你不想要,并希望每个人都有自己的计数器,那么这样做: p>

  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));

编辑: 我忘记将正在返回的处理程序命名在最后两个版本。


I'm trying to remove an event listener inside of a listener definition:

canvas.addEventListener('click', function(event) {
    click++;
    if(click == 50) {
        // remove this event listener here!
    }
// More code here ...

How could I do that? this = event... Thank you.

解决方案

You need to use named functions.

Also, the click variable needs to be outside the handler to increment.

var click_count = 0;

function myClick(event) {
    click_count++;
    if(click_count == 50) {
       // to remove
       canvas.removeEventListener('click', myClick);
    }
}

// to add
canvas.addEventListener('click', myClick);


EDIT: You could close around the click_counter variable like this:

var myClick = (function( click_count ) {
    var handler = function(event) {
        click_count++;
        if(click_count == 50) {
           // to remove
           canvas.removeEventListener('click', handler);
        }
    };
    return handler;
})( 0 );

// to add
canvas.addEventListener('click', myClick);

This way you can increment the counter across several elements.


If you don't want that, and want each one to have its own counter, then do this:

var myClick = function( click_count ) {
    var handler = function(event) {
        click_count++;
        if(click_count == 50) {
           // to remove
           canvas.removeEventListener('click', handler);
        }
    };
    return handler;
};

// to add
canvas.addEventListener('click', myClick( 0 ));

EDIT: I had forgotten to name the handler being returned in the last two versions. Fixed.

这篇关于JavaScript:删除事件侦听器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆