删除事件处理程序

时间:2013-07-05 15:36:04

标签: extjs sencha-touch-2 sencha-touch-2.1

我添加了一个类似的事件:

this.getLetters().element.on({
   tap: me.lettersTap,
   delegate: 'span.letter-hidden'
});

基于用户交互,我正在为这些添加另一个类 元素,所以它将是:

<span class="letter-hidden new_class">

我想基于“new_class”删除事件处理程序,但不知道如何。 我尝试过:

questionController.getLetters().element.un({
            tap: questionController.lettersTap,
            delegate: 'span.new_class',
            scope: questionController
        });

但它不起作用,如果我在上面的代码中用letter-hidden替换“new_class”,我可以删除它,所以我想如果使用相同的类就可以删除它,这在文档中没有提到。我做错了什么,替代方案会很好......谢谢。

1 个答案:

答案 0 :(得分:2)

您使用了委托,因此在尝试删除委托时使用完全相同非常重要。否则,ExtJS必须指望它是一个不同的元素,这是一种正确的行为。

这是注册听众的检查方式:

(registered.fn === remove.fn && 
 registered.scope === remove.scope && 
 registered.delegate === remove.delegate && 
 registered.order === remove.order)

所以不,没有替代方法。您必须使用与注册时相同的属性取消注册。

  

注意:Sencha不会使用您的属性在DOM中进行查询   在oberservalbe侦听器集合中查找侦听器   注册时就像您递交注销的那个。