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!

questionAnswers(6)

yourAnswerToTheQuestion