Добавление и удаление прослушивателей событий с параметрами
Я пишуванильный JavaScript инструмент, который при включении добавляет слушатели событий к каждому из элементов, переданных в него.
Я хотел бы сделать что-то вроде этого:
var do_something = function (obj) {
// do something
};
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', do_something(arr[i]));
}
К сожалению, это не работает, потому что, насколько я знаю,при добавлении прослушивателя событий параметры можно передавать только в анонимные функции:
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', function (arr[i]) {
// do something
});
}
Проблема в том, что мне нужно иметь возможность удалять прослушиватель событий, когда инструмент отключен, но я не думаю, что можно удалить прослушиватели событий с анонимными функциями.
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
Я знаю, что могу легко использовать jQuery для решения своей проблемы, но я пытаюсь минимизировать зависимости. JQuery должен каким-то образом обойти это, но код немного джунглей!