删除 class 添加的事件侦听器
Removing event listeners added by class
我想了解如何删除 class 添加的事件侦听器,如下所示(删除 div#mainMenu
的事件)
我已经尝试了所有可用的方法,但 none 对我有用。我也没有在 extJS4.x 版本中看到这个问题,但只在 3.4 版本中看到。任何简单的 JS 代码来处理这个?
您可以使用 getEventListeners 函数获取元素的监听器映射。之后使用 removeEventListener 方法,从元素中删除事件。您可以使用此函数从元素中删除所有事件。
function removeEventListeners(element, listenerMap) {
Object.keys(listenerMap).forEach(function (name) {
var listeners = listenerMap[name];
listeners.forEach(function (object) {
element.removeEventListener(name, object.listener);
});
});
}
removeEventListeners(elementRef,getEventListeners(elementRef));
终于,我想出了解决这个问题的方法。移除侦听器的方法是转到父 div 组件并调用元素上的 removeAllListeners() 方法。可以使用 this.el
在 afterRenderHandler
函数中访问该元素,然后调用 this.el.parent().removeAllListeners()
以便它删除干扰用户体验的 un-required 侦听器。如果识别的侦听器是第 n 级父级(调用该方法 n 次),您可以以链式方式调用父级方法。
例如:this.el.parent().parent().removeAllListeners()
如果您有 ID,您也可以尝试直接访问该元素,方法是调用:var el = Ext.get('mainMenu');
然后调用 el.removeAllListeners();
通过获取与侦听器有问题的元素的句柄,可以将类似的方法应用于任何其他 JS 框架。
我想了解如何删除 class 添加的事件侦听器,如下所示(删除 div#mainMenu
的事件)
我已经尝试了所有可用的方法,但 none 对我有用。我也没有在 extJS4.x 版本中看到这个问题,但只在 3.4 版本中看到。任何简单的 JS 代码来处理这个?
您可以使用 getEventListeners 函数获取元素的监听器映射。之后使用 removeEventListener 方法,从元素中删除事件。您可以使用此函数从元素中删除所有事件。
function removeEventListeners(element, listenerMap) {
Object.keys(listenerMap).forEach(function (name) {
var listeners = listenerMap[name];
listeners.forEach(function (object) {
element.removeEventListener(name, object.listener);
});
});
}
removeEventListeners(elementRef,getEventListeners(elementRef));
终于,我想出了解决这个问题的方法。移除侦听器的方法是转到父 div 组件并调用元素上的 removeAllListeners() 方法。可以使用 this.el
在 afterRenderHandler
函数中访问该元素,然后调用 this.el.parent().removeAllListeners()
以便它删除干扰用户体验的 un-required 侦听器。如果识别的侦听器是第 n 级父级(调用该方法 n 次),您可以以链式方式调用父级方法。
例如:this.el.parent().parent().removeAllListeners()
如果您有 ID,您也可以尝试直接访问该元素,方法是调用:var el = Ext.get('mainMenu');
然后调用 el.removeAllListeners();
通过获取与侦听器有问题的元素的句柄,可以将类似的方法应用于任何其他 JS 框架。