Bueno, creo realmente que es mucho mas sencillo de lo que lo estás planteando, te voy a poner una aproximación inicial y a ver si de esta forma eres capaz de sacar. Para este ejemplo vamos a utilizar capacidades de HTML5 como ponter atributos data.
Tenemos una lista con sublistas, donde la lista padre va a ser el grupo alimenticio por así decirlo y la segunda lista, los alimentos que están dentro de ese grupo. Para ello lo primero deberías hacer un menú desplegable, nada de usar tag select ni nada.
Código HTML:
Ver original <li data-food="Vegetables">Vegetables
<li data-aliment="Lechuga">Lechuga
</li> <li data-aliment="Cebolla">Cebolla
</li> <li data-food="Pescados">Pescados
<li data-aliment="Mero">Mero
</li> <li data-aliment="Sardina">Sardina
</li> <li data-food="Frutas">Frutas
</li>
Código Javascript
:
Ver originalvar foodTypesDOM = $('.food-list').find ('[data-food]'); // Traemos todos los los data-food
var foodTypes = {};
//
// Introducimos en foodTypes cada data-food
// Es decir, tendremos foodTypes ["Vegetables"], foodTypes ["Pescados"], etc
$.each (foodTypesDOM, function (index, element) {
// Esto monta el array asociado al data-food
// donde se almacenarán los alimentos
foodTypes [$(element).data ('food')] = [];
});
//
// Ahora añadiremos un evento click a la lista de grupos
// alimenticios y solo captaremos los que se den sobre
// los que tienen el atributo aliment
$('.food-list').on ('click', function (evt) {
var $element = $(evt.target);
//
// Comprobamos que lo que se pulsa es un alimento
if ($element.data ('aliment') !== undefined) {
//
// Buscamos el padre del alimento que ha pulsado
// El padre puede ser Vegetables, Pescados, Frutas en este caso
var parent = $element.parent().parent().data ('food');
//
// Ahora accedemos a nuestro objeto de grupos
// alimenticios y vamos directamente al parent que haya
// Es decir si en parent está Vegetables, foodTypes [parent] apunta
// al array de Vegetables
foodTypes [parent].push ($element.data ('aliment'));
}
console.log (foodTypes);
});
Debes acabarlo tu. No tiene validaciones ni nada, si tienes dudas preguntame.
Gracias y saludos!