Scusate per il titolo del topic ma non sapevo sinceramente cosa mettere

codice:
    var btns = new Buttons(["move","select"]);
    for(var i=0;i<btns.tools.length;i++){
        b = btns.tools[i];
        $("#"+b+"-tool").mouseover(function(){
            if (btns.isClicked(i)) return;
            $(this).attr("src","./img/"+b+"-hover.png");
        }).mouseout(function(){
            if (btns.isClicked(i)) return;
            $(this).attr("src","./img/"+b+".png");
        }).mousedown(function(){
            if (btns.isClicked(i)) return;
            $(this).attr("src","./img/"+b+"-clicked.png");
        }).mouseup(function(){
            if (btns.isClicked(i)) return;
            $(this).attr("src","./img/"+b+"-clicked.png");
            btns.setClicked(i,true);
        });
    }
Il mio problema è che b dopo il ciclo vale "select" e ogni volta che vengono chiamate le funzioni evento b vale appunto "select". Io vorrei invece che b fosse valutato durante la creazione della funzione e quindi ogni volta verrebbe usato il valore corretto e non l'ultimo valore all'uscita del ciclo.

Qualcuno mi illumina? Grazie!