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。所以我不能使用匿名功能。
最佳答案
当您在函数上调用bind时,它将返回具有bound属性的新函数。只需存储该函数,以便稍后可以检索它以删除事件处理程序。
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');
}