Показать сообщение отдельно
  #1 (permalink)  
Старый 31.12.2011, 05:24
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Передача кастомных данных в событие и удаление обработчика
У jQuery есть такие методы, как on и off.
Частный случай первого:
$(nodes).on('click', {valera: 5}, handler);

В handler мы можем получить свойство valera:
function handler (event) {
  log(event.data.valera); //5
}

Затем можем удалить обработчик handler:
$(nodes).off('click', handler);
Удаляется.

--------------

Передачу данных в событие можно организовать следующим образом (по-другому не знаю как) (данные должны быть обязательно в ивенте, как описано выше!)
function addListener(element, event, data, handler) {
  element.addEventListener(event, function(event){
      event.data = data;
      handler.apply(this, arguments);
  });
}
То есть приходится передавать обработчику совершенно другую функцию.

addListener(div, 'click', {valera: 5}, handler);

function removeListener(node, event, handler) {
   // ???
}

Как теперь удалить этот новый обработчик, передав аргументом старый?
removeListener(div, 'click', handler);

В jQuery как-то это замудренно сделано.

(вопрос вполне касается "общих вопросов")
Ответить с цитированием