Grazie per la dritta
ur welcome

perchè con:
codice:
var id = $(this).closest('.contenitore_ricetta').attr('id').val();
Non ottengo un valore?
Non mi è chiaro cosa intendi ottenere con val(); tale metodo infatti è utilizzato per recuperare il valore di elementi input, select e textarea (cioè elementi che posseggono una proprietà value); non mi pare il tuo caso.

Ad ogni modo dipende anche da ciò che viene restituito dal metodo (funzione) che lo precede. Il metodo attr() restituisce una stringa (vedi documentazione), cioè il valore testuale dell'attributo specificato, per cui non puoi usare val() perché questo metodo non appartiene all'oggetto stringa; presumibilmente otterrai un errore visibile nella console.

Eventualmente chiarisci quale sia il tuo preciso intento.

... Domanda inversa, come posso aggiungere un elemento preso dal db, senza aggiornare la pagina?
La risposta è "AJAX", argomento largamente discusso sul web e anche qui sul forum.
Consiglio di fare delle ricerche sia sul web sia sul forum per capire come poter iniziare ad impostare la cosa; se poi hai difficoltà puoi aprire eventualmente una nuova discussione su questo specifico argomento.