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。所以我无法使用匿名功能。
答案 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...