2013-07-05 184 views
2

我已经添加了一个事件,像这样:删除事件处理

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 
     }); 

,但它不工作,我可以,如果我取代“new_class”与信藏在上面的代码中删除它,所以我想如果同一个类被删除的作品被使用,这在文档中没有提及。我做错了什么,替代品会很高兴有它...谢谢。

回答

2

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

这是注册的监听器是如何得到遏制:

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

因此,没有,有没有替代方法。您必须注销与注册它相同的属性。

注意:煎茶不使用你的属性在DOM中查询它在oberservalbe听众集合为 登记像你交给注销一个监听器只是 查找。

+0

这是我跳来跳去的那种答案。现在我明白了,我搜索了源代码,但我没有看到这个......我最终取代了元素的类,并且侦听器也没有了。谢谢。 –

+0

@ Marius.C不客气;) – sra