Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2011, 12:53
kyke_89
 
Fecha de Ingreso: junio-2010
Ubicación: Huelva
Mensajes: 24
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta Añadir evento a un objeto creado en tiempo de ejecucion

Bueno os comento mi problema.
Tengo un <select> con las opciones del 1 al 5, depende de lo seleccionado se crearan dicho numero de <select> mas.

Mi problema surge al intentar añadirles eventos a estos <select> creados en ejecucion. Todos los eventos se crean pero al mostrar por pantalla la opción señalada mediante alert() todos me muestran la opción señalada del ultimo select creado. No se si me explico.

Os dejo un boceto de mi código comentado.

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $("#menus").change(function () {    
  3.         $("#contenido").html(" ");     
  4.         $num = 0;                      
  5.         $htmltext ="";                 
  6. //#menu: <select> con numeros del 1 al 5 a elegir
  7. //#contenido: capa en la que metere HTML dependiendo       
  8. //$num: guarda la opcion seleccionada
  9. //$htmltext: guarda el codigo html que despues metere en #contenido
  10.  
  11.         $("#menus option:selected").each(function () {
  12.             $num = $(this).text();     
  13.         });                            
  14. /*función para recoger la seleccion nose si habra otra forma mas simple la recogí
  15.  de un ejemplo en el que había multiselect*/           
  16.        
  17.         for($i=1; $i <= $num; $i++){   
  18.             $htmltext+='<select id="submenu'+$i+'" name="submenus" ><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option></select>';
  19.         }
  20. //Bucle que crea tantos select como haya elegido el usuario
  21.        
  22.         $("#contenido").html($htmltext);       
  23. /*Meto el html en la capa para que existan los nuevos select y poderles crear su
  24.  correspondiente evento*/
  25.        
  26.         for($i=1; $i<= $num; $i++){    
  27.             $id="#submenu"+$i;         
  28.             $($id).change(function () { //Añado evento
  29.            
  30.            
  31.                     $($id+" option:selected").each(function () {
  32.                         $num2 = $(this).text();
  33.                     });                
  34. //Funcion identica a la de arriva para recojer opcion seleccionada
  35.                     alert($num2);      
  36. //Mensaje para ver si funciona bien que no lo hace
  37.             });
  38.         }
  39. //Bucle para crearle eventos a los diferentes select
  40. //$id Guarda la id del select al que se le va a añadir la funcion
  41.            
  42.     });
  43. });

Gracias por adelantado por molestaros en leer mi mensaje aunque no puedan resolver mi duda.

Saludos.