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

Смежные вопросы