匿名函数绑定的removeEventListener [重复]

Posted

技术标签:

【中文标题】匿名函数绑定的removeEventListener [重复]【英文标题】:removeEventListener of anonymous function bind [duplicate] 【发布时间】:2019-05-25 16:08:49 【问题描述】:

我需要帮助删除匿名函数上的 EventListener。我尝试使用事件处理程序,但我还需要通过函数传递一个元素来绑定它。

// adds eventlistener to element
cardElement.addEventListener("click", flipCard.bind(this, cardElement));

// suppose to remove eventlistener
document.getElementById(cardsInPlay[0].id).removeEventListener("click", flipCard);

【问题讨论】:

【参考方案1】:

bind 创建一个新函数,您可以从documentation 中读取

所以你可以做的是:

flipCard = flipCard.bind(this, cardElement);
cardElement.addEventListener("click", flipCard);
document.getElementById(cardsInPlay[0].id).removeEventListener("click", flipCard);

【讨论】:

【参考方案2】:

我最终使用了不同的方法来移除事件监听器。我对节点进行了深度克隆并替换了它。

var matchOne = cardOne.cloneNode(true);
cardOne.parentNode.replaceChild(matchOne, cardOne);

【讨论】:

以上是关于匿名函数绑定的removeEventListener [重复]的主要内容,如果未能解决你的问题,请参考以下文章

js事件绑定总结

ie7ie8兼容addEventListener和removeEventListener,解决this指向和detachEvent解除绑定事件问题

关于事件委托 removeEventListener 不生效的问题

php 闭包:为啥绑定到静态类时匿名函数声明中的“静态”?

Scala 中是不是有用于在匿名函数中绑定值的语法糖?

Javascript里removeEventListener的必要