Quote Originariamente inviata da m4rko80 Visualizza il messaggio
Per farti un idea, se provi questo (salvalo come .html e provalo cosi' com'è)
codice:
<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">




var lavori;




function recuperoLavori() {
  //recupero lavori da chiamata ajax, il risultato di data presa da done(data) sarà tipo:
    var data = [{
        id: 1,
        titolo: "lavoro 1",
        data: "20180105",
        hash: "555ggd3"
    },
     {
        id: 2,
        titolo: "lavoro 2",
        data: "20180105",
        hash: "4fs45s"
    }
    ];


    lavori = data; //assegno data a "lavori" globale


    jQuery.each(lavori,function(k,item){
        jQuery('#lavori').append('<a href="#" data-id="'+item.id+'">'+item.titolo+'</a><br/>');
    })


}


jQuery(function(){
    recuperoLavori();
    jQuery('#lavori a').on('click', function(){
        var ID = jQuery(this).data('id');
        console.log('click id : ' + ID);


     var lavoro = jQuery.map( lavori, function( item, i ) {
          if(item.id==ID){
              return item;
          }
    });
     console.log(lavoro);
    })


});






</script>
</head>
<body>
<P>lista lavori</P>
<div id="lavori">
...........
</div>
</body>
<html>
recuperoValori() sarà la tua chiamata al server per recuperare la lista iniziale.
La lista lavori l'ho craeta di prova post richiesta (immagino sarà così anche la tua).
Settato poi "lavori" come globale e al click su un link/lavoro generato recupero tutti i dati con match ID lavoro e item trovato nella lista lavori.
Wow parto subito con il ringraziarti! Il tuo esempio pare tanto andare a concretizzare la mia idea, ora non mi resta che apprenderne la logica e applicarlo al mio codice.
Ti ringrazio davvero tanto!

Un'unica cosa, il tuo array "var data" corrisponderebbe al mio array "var files"?