Il problema è qui:
Codice:
$(elemento[i]).click(function(){
$(dettaglioelemento[i]).animate({opacity:"1"},1000);
});
Se provi a fare un log/alert di i, vedrai che ad ogni click vale sempre 8.
A livello di interpretazione del codice non ho idea cosa avviene, forse la funzione viene bindata staticamente in qualche locazione di memoria e pertanto carica sempre il valore attuale (più `recente`) di i quando viene invocata.
Per ovviare a questo problema, devi generare la funzione usando un'altra funzione. Ecco il codice:
Codice:
var elemento = new Array();
var dettaglioelemento = new Array();
var fine = $("#contafine").html();
function clickFn(i) {
return function() {
$(dettaglioelemento[i]).animate({opacity:1}, 1000);
};
}
for(i=0;i<=fine;i++){
elemento[i] = "#tabella"+i+" img";
dettaglioelemento[i] = "#dettagli"+i;
$(elemento[i]).click(clickFn(i));
}