如何将参数传递给eventListener函数,然后删除该函数?

时间:2018-02-10 18:34:53

标签: javascript

if(allSquares[block].classList.toggle("showPath"))
        {
            allSquares[block].addEventListener('click', moveAbleBoxes);
            moveAbleBoxes.bind(this, i, j, piece);
            //moveAbleBoxes(this, i, j, piece);
        }
        else {
            allSquares[block].removeEventListener('click', moveAbleBoxes);
            console.log('listener removed');
        }

我想以某种方式将这些参数传递给函数'moveAbleBoxes',后来我也想要删除那个eventListener。所以我无法使用匿名功能。

2 个答案:

答案 0 :(得分:1)

在函数上调用bind时,它返回一个带有绑定属性的新函数。只需存储该函数,以便稍后检索它以删除事件处理程序。

var moveAbleBoxesB = {};
...
    if(allSquares[block].classList.toggle("showPath"))
    {
        moveAbleBoxesB[block] = moveAbleBoxes.bind(this, i, j, piece);
        allSquares[block].addEventListener('click', moveAbleBoxesB[block]);
        //moveAbleBoxes(this, i, j, piece);
    }
    else {
        allSquares[block].removeEventListener('click', moveAbleBoxesB[block]);
        console.log('listener removed');
    }

答案 1 :(得分:0)

正如穆萨所说,我使用的是数组,而不仅仅是一个简单的变量。 一个简单的变量就是删除最后添加的eventListener而不是全部。

我得到了理想的答案: - i got the answer here...