2013-08-10 3 views
0

Я написал парсер шаблонов в JavaScript. Он отображает «проект» в календарь и добавляет обработчик кликов. Когда вы нажимаете контейнер проекта, он начинает загрузку содержимого проекта в другое окно. Все идет нормально. Но в какой-то момент мне нужно перезаписать этот обработчик и заменить его другим. Сначала звучит просто, но моя программа использует сочетание услуг push и опроса, и проект должен выполняться несколько раз в минуту (он будет полностью заменен, по крайней мере, на первой итерации).Заменить второй обработчик, связать с по

Обычный обработчик щелчка добавляется с использованием метода jQuery click(). Специальный обработчик кликов добавляется с помощью метода jQuery on(), так как все проекты должны быть доступны для этого нового обработчика. Теперь, каждый раз, когда проект повторно вынес обработчик щелчка будет добавлен и выполняться до добавлен обработчик с on :(

Я мог установить флаг в Templater так, что он может решить, какой обработчик он должен добавить к проекту, но это будет мешать нашей программы парадигм мы использовали, где каждый модуль должен быть полным исполняемым без взаимодействия с другими модулями.

Любые предложения? могу ли я приоритеты обработчики?

ответ

0

Вы можете удалить предыдущую нажмите перед тем как привязать новый.

$yourObject.off('click'); 
      .on('click', function(event){ 
       //do sth 
      }); 

http://api.jquery.com/off/

Если у вас есть более чем один щелчок, и хотите, чтобы отвязать только некоторые из них используют пространства имен событий.

Переплет:

$yourObject.on('click.module-name'); 

Unbinind только нажми обработчик событий из пространства имен:

$yourObject.off('click.module-name'); 

Несвязанности всех обработчиков событий из пространства имен:

$yourObject.off('.module-name'); 
Смежные вопросы