<分区>
我用的是createjs的on()函数:
myObj.on("mousedown", (e)=>{
this.myObjMouseDown(e);
});
现在,我想删除监听器,我尝试使用 off() 函数编写这段代码:
myObj.off("mousedown", (e)=>{
this.myObjMouseDown(e);
});
但是,代码似乎没有正常工作。
取消事件应该怎么写?
注意:请注意,由于“this”这个词,我需要使用箭头函数。
<分区>
我用的是createjs的on()函数:
myObj.on("mousedown", (e)=>{
this.myObjMouseDown(e);
});
现在,我想删除监听器,我尝试使用 off() 函数编写这段代码:
myObj.off("mousedown", (e)=>{
this.myObjMouseDown(e);
});
但是,代码似乎没有正常工作。
取消事件应该怎么写?
注意:请注意,由于“this”这个词,我需要使用箭头函数。
最佳答案
您必须传递对同一函数的引用——但重要的是要注意 on
方法无论如何都会为您创建一个包装函数,因为它还允许您传递范围参数。 on/off
方法专门用于解决 ES5 中的作用域问题。 ( docs )
确保您可以取消订阅的最佳方法是存储对 on
函数调用值的引用,并将其传递给 off()
。
var evt = obj.on("click", () => doSomething());
// later
obj.off("click", evt);
另一种取消事件的好方法是在函数回调中删除它们:
doSomething(evt) {
// Your Code
if (condition) {
evt.remove();
}
}
最后,如果您只是想进行清理,请使用 removeAllEventListeners
( docs ),您可以将可选的事件类型传递给它。
obj.removeAllEventListeners("click");
关于javascript - createjs off() 函数从 js 箭头函数中删除监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975842/
相关文章:
javascript - Chart.js 版本 3 - 如何制作重叠条形图?
javascript - Chrome 扩展程序弹出窗口不起作用,点击事件未处理
javascript - Animate CC 中的 CreateJS JavasScript 框架脚本
javascript - 什么时候应该在 ES6 箭头函数中使用 return 语句
javascript - Netscape 7.0+ 设置 HTML DOM 节点文本 (ECMAScript 3)
javascript - 重置 d3 forceSimulation 中的所有隔离力