Javascript 无法从我自己的事件委派系统中删除事件
我正在尝试编写我自己的事件委派系统,它工作得很好,只是我无法在将事件附加到元素后删除它!我一直在绞尽脑汁想弄清楚这件事。任何帮助都将不胜感激 代码在笔中: 以及以下内容: 加成Javascript 无法从我自己的事件委派系统中删除事件,javascript,event-handling,dom-events,event-delegation,Javascript,Event Handling,Dom Events,Event Delegation,我正在尝试编写我自己的事件委派系统,它工作得很好,只是我无法在将事件附加到元素后删除它!我一直在绞尽脑汁想弄清楚这件事。任何帮助都将不胜感激 代码在笔中: 以及以下内容: 加成 洛伦 洛伦 洛伦 洛伦 洛伦 洛伦 洛伦 洛伦 洛伦 洛伦 Javascript Element.prototype.matches=Element.prototype.matches | | Element.prototype.msMatchesSelector; 函数为Descendant(父母、子女){ 对于
洛伦
洛伦
洛伦
洛伦
洛伦
洛伦
洛伦
洛伦
洛伦
洛伦
Javascript
Element.prototype.matches=Element.prototype.matches | | Element.prototype.msMatchesSelector;
函数为Descendant(父母、子女){
对于(var i=0;i
问题在于bind()
,它返回一个新函数。从文件中 bind()方法创建一个新函数,该函数在调用时具有 此关键字设置为提供的值,并具有给定的 调用新函数时,将在任何函数前面提供参数 因此,每次调用
bind
都会得到一个全新的函数,例如在这里
this.parent.addEventListener(options.event, eventCallback.bind(this), false);
这和
var brandNewFunction = eventCallback.bind(this); // creates new function
this.parent.addEventListener(options.event, brandNewFunction, false);
因此,您根本没有传递函数eventCallback
,而是传递了一个新函数,因此不能使用
this.parent.removeEventListener(options.event, eventCallback, false);
由于您从未传入eventCallback
,并且removeEventListener
的函数必须相同才能删除侦听器。解决办法当然是这样称呼它
this.parent.addEventListener(options.event, eventCallback, false);
找到其他聪明的方法来传递你的选择等等
this.parent.removeEventListener(options.event, eventCallback, false);
this.parent.addEventListener(options.event, eventCallback, false);