如何删除 addClsOnOver 监听器 ExtJS

Posted

技术标签:

【中文标题】如何删除 addClsOnOver 监听器 ExtJS【英文标题】:How to remove addClsOnOver listener ExtJS 【发布时间】:2014-02-17 16:00:21 【问题描述】:

当一个按钮被点击时,我使用addClsOnOver 来改变按钮的over cls,它工作正常。第二次单击按钮时,再次调用 addClsOnOver 但使用不同的类,这预计会发生多次,但不幸的是,addClsOnOver 创建的事件侦听器在第一次单击后不会被覆盖。 我现在知道我需要使用removeListener() 然后addClsOnOver 如果我想在第一次之后再次更改它,但不知道要放入什么参数来删除addClsOnOver 侦听器。 我确信它相当简单,但我无法猜测 atm 并且无法在文档中找到任何可能暗示自动生成的侦听器可能被调用的内容。

请帮忙? :)

【问题讨论】:

【参考方案1】:

如果你没有在removeListener()方法中设置fn参数,指定事件的所有监听器都会被移除。

因此,如果您不使用自己的侦听器来处理按钮元素上的mouseentermouseleave,您可以使用此代码删除由addClsOnOver() 方法设置的侦听器:

// use el.dom as scope because it is used el.hover method when listeners were created
el.removeListener('mouseenter', null, el.dom);
el.removeListener('mouseleave', null, el.dom);

举个例子:https://fiddle.sencha.com/#fiddle/30d

【讨论】:

老兄,非常感谢!为我节省了一个世纪的工作

以上是关于如何删除 addClsOnOver 监听器 ExtJS的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Ext.Msg 定义监听器?

ExtJS 下拉框监听事件日期选择器监听事件实现动态给items添加删除数据

Ext.js 2 复选框和事件通过更改侦听器触发两次

如何将面板的高度绑定到 Ext Js 中的视口高度?

在 EXTJS 4 中向 Ext.Grid.panel 添加监听器

如何从 ext js 中的窗口中删除项目?