Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/02/2016, 03:45
kraneok
 
Fecha de Ingreso: noviembre-2010
Ubicación: Córdoba
Mensajes: 119
Antigüedad: 13 años, 5 meses
Puntos: 8
Respuesta: Select option multiple javascript

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
  1. <ul>
  2. <ul class="food-list">
  3.     <li data-food="Vegetables">Vegetables
  4.         <ul>
  5.             <li data-aliment="Lechuga">Lechuga</li>
  6.             <li data-aliment="Cebolla">Cebolla</li>
  7.         </ul>  
  8.     </li>
  9.     <li data-food="Pescados">Pescados
  10.         <ul>
  11.             <li data-aliment="Mero">Mero</li>
  12.             <li data-aliment="Sardina">Sardina</li>
  13.         </ul>
  14.     </li>
  15.     <li data-food="Frutas">Frutas</li>
  16. </ul>
  17. </ul>

Código Javascript:
Ver original
  1. var foodTypesDOM = $('.food-list').find ('[data-food]'); // Traemos todos los los data-food
  2.     var foodTypes    = {};
  3.  
  4.     //
  5.     // Introducimos en foodTypes cada data-food
  6.     // Es decir, tendremos foodTypes ["Vegetables"], foodTypes ["Pescados"], etc
  7.     $.each (foodTypesDOM, function (index, element) {
  8.         // Esto monta el array asociado al data-food
  9.         // donde se almacenarán los alimentos
  10.         foodTypes [$(element).data ('food')] = [];
  11.     });
  12.  
  13.     //
  14.     // Ahora añadiremos un evento click a la lista de grupos
  15.     // alimenticios y solo captaremos los que se den sobre
  16.     // los que tienen el atributo aliment
  17.     $('.food-list').on ('click', function (evt) {
  18.         var $element = $(evt.target);
  19.         //
  20.         // Comprobamos que lo que se pulsa es un alimento
  21.         if ($element.data ('aliment') !== undefined) {
  22.             //
  23.             // Buscamos el padre del alimento que ha pulsado
  24.             // El padre puede ser Vegetables, Pescados, Frutas en este caso
  25.             var parent = $element.parent().parent().data ('food');
  26.  
  27.             //
  28.             // Ahora accedemos a nuestro objeto de grupos
  29.             // alimenticios y vamos directamente al parent que haya
  30.             // Es decir si en parent está Vegetables, foodTypes [parent] apunta
  31.             // al array de Vegetables
  32.             foodTypes [parent].push ($element.data ('aliment'));
  33.         }
  34.  
  35.         console.log (foodTypes);
  36.     });

Debes acabarlo tu. No tiene validaciones ni nada, si tienes dudas preguntame.
Gracias y saludos!