Adicionando e removendo ouvintes de eventos com parâmetros
Eu estou escrevendo umbaunilha JavaScript ferramenta, que, quando ativado, adiciona ouvintes de evento a cada um dos elementos passados nele.
Eu gostaria de fazer algo assim:
var do_something = function (obj) {
// do something
};
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', do_something(arr[i]));
}
Infelizmente isso não funciona, porque, tanto quanto eu sei,ao adicionar um ouvinte de evento, os parâmetros só podem ser passados para funções anônimas:
for (var i = 0; i < arr.length; i++) {
arr[i].el.addEventListener('click', function (arr[i]) {
// do something
});
}
O problema é que eu preciso ser capaz de remover o ouvinte de eventos quando a ferramenta está desabilitada, mas eu não acho que é possível remover ouvintes de eventos com funções anônimas.
for (var i = 0; i < arr.length; i++) {
arr[i].el.removeEventListener('click', do_something);
}
Eu sei que eu poderia facilmente usar o jQuery para resolver o meu problema, mas estou tentando minimizar as dependências. jQuery deve contornar isso de alguma forma, mas o código é um pouco de selva!