Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача кастомных данных в событие и удаление обработчика (https://javascript.ru/forum/misc/24470-peredacha-kastomnykh-dannykh-v-sobytie-i-udalenie-obrabotchika.html)

FINoM 31.12.2011 05:24

Передача кастомных данных в событие и удаление обработчика
 
У 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 как-то это замудренно сделано.

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

Gvozd 31.12.2011 06:29

http://javascript.ru/tutorial/events...e-obrabotchika
Читали?
Там достаточно хорошо описана библиотека для добавления событий.
Допилить до передачи кастомных данных - не должно составить особого труда


Часовой пояс GMT +3, время: 11:54.