Anche in javascript le variabili hanno un loro ambito.
Puoi pensare che in quell'assegnazione tu stia assegnando all'"onclick" una funzione che utilizzi la "i" che in quel momento viene elaborata, ma la "i" in questione verrà elaborata solo successivamente per il valore che avrà nel momento in cui l'evento si verificherà.
Visto che ne abbiamo iterato il valore in un ciclo for questa assumerà sempre il valore 5!
Cosa ho fatto?
Ho assegnato ad ogni elemento imgs.item(i) una proprietà "personalizzata" i e gli ho assegnato il valore che nel momento dell'assegnazione aveva, appunto, la variabile "i".
Nella gestione degli eventi "this" ritorna sempre l'elemento, pertanto this.i ritornerà il valore che abbiamo assegnato ad ogni item di "imgs".