删除addEventListener中粘贴参数的元素上的侦听器

问题描述 投票:0回答:1

如何删除这样的EventListener?我知道在addEventListener的move函数中我传递了一个匿名函数,但是我必须在那儿传递一些参数。我该如何解决?

move = (id) => {
    roadFields.forEach((el) => {
        el.addEventListener('click', (e) => this.handleRoadField(id, matrixBoard, e));
    });
};

handleRoadField = (id, matrixBoard, event) => {
    if (true) {
        roadFields.forEach(el=>{
            el.removeEventListener('click', this.handleRoadField);
        })
    } else {
        console.log('X');
    }
};
javascript
1个回答
1
投票

尝试定义onClick函数并在两种方法中都使用它:

move = (id) => {
    roadFields.forEach((el) => {
        el.addEventListener('click', onClick);
    });
};

handleRoadField = (id, matrixBoard, event) => {
    if (true) {
        roadFields.forEach(el=>{
            el.removeEventListener('click', onClick);
        })
    } else {
        console.log('X');
    }
};

function onClick(e) {
    this.handleRoadField(id, matrixBoard, e);
}
© www.soinside.com 2019 - 2024. All rights reserved.