Я пишу инструмент vanilla 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
});
}
проблема заключается в том, что мне нужно, чтобы иметь возможность удалить слушатель событий, когда инструмент отключен, но я не думаю, что можно удалить слушатель событий с ANO nymous функции.
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
Я знаю, что я мог бы легко использовать JQuery, чтобы решить мою проблему, но я стараюсь свести к минимуму зависимости. jQuery должен обойти это как-то, но код немного джунглей!
Так называйте своих слушателей, тогда вы можете использовать 'removeEventListener'. – marekful
Поскольку вы знаете, что jQuery может решить вашу проблему, вам просто нужно прочитать исходный код, как он работает. – pktangyue
+1 по крайней мере, для смелости слова «ванильный JavaScript», а также выделение курсивом о jQuery! (Надеюсь, никто не будет предлагать jQuery в качестве решения сейчас ...) Но также +1, потому что это хороший вопрос. – guypursey