У 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 как-то это замудренно сделано.
(вопрос вполне касается "общих вопросов")