2013-07-05 186 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