stai ricadendo sempre nello stesso identico errore... ripeto tutto quello che sta dentro la funzione $(this).click(function(){ viene eseguito solo quando l'evento associato viene invocato, tutto quello che sta fuori dalla funzione viene invece eseguito durante il ciclo, quindi quanto vale la variabile rel alla fine del ciclo? 4
codice:
link = $(".test");
$.each(link, function(){
rel = $(this).attr("rel"); //valorizzo la variabile rel
$(this).click(function(){ //definisco la funzione
test(rel); <--qui non ci entra, questa riga di codice viene eseguita quando l'evento click viene invocato e in quel momento il ciclo è terminato e rel vale 4
});
});
//il ciclo è terminato la variabile rel, nell'utlimo ciclo è stata valorizzata a 4
function test(rel){
alert(rel); //stampo a video sempre 4
}
La soluzione è questa:
codice:
link = $(".test");
$.each(link, function(){
$(this).click(function(){
test($(this).attr("rel"););
});
});
function test(rel){
alert(rel);
}
Il tuo ragionamento dimostra qualche lacuna in fatto di logica di programmazione. Non c'è assolutamente nessun bug.