Como atribuir retornos de chamada de evento iterando uma matriz em javascript (jQuery)
Estou gerando uma lista não ordenada através de javascript (usando jQuery). Cada listitem deve receber seu próprio ouvinte de evento para o evento "click". No entanto, estou com problemas para obter o retorno de chamada correto associado ao item correto. Um exemplo de código (despojado) pode limpar um pouco as coisas:
for(class_id in classes) {
callback = function() { this.selectClass(class_id) };
li_item = jQuery('<li></li>')
.click(callback);
}
Na verdade, mais está acontecendo nesta iteração, mas não achei que fosse muito relevante para a questão. Em qualquer caso, o que está acontecendo é que a função de retorno de chamada parece serreferenciado ao invés dearmazenado (copiado). Resultado final? Quando um usuário clicaqualquer dos itens da lista, ele sempre executará a ação para oúltimo class_id
noclasses
array, como ele usa a função armazenada emcallback
naquele ponto específico.
Eu encontrei soluções sujas (como analisar ohref
atributo em um fechadoa
elemento), mas eu queria saber se existe uma maneira de alcançar meus objetivos de uma maneira 'limpa'. Se minha abordagem é horrível, por favor, diga, contanto que você me diga por que :-) Obrigado!