Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Añadir evento a un objeto creado en tiempo de ejecucion

Estas en el tema de Añadir evento a un objeto creado en tiempo de ejecucion en el foro de Frameworks JS en Foros del Web. 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> ...
  #1 (permalink)  
Antiguo 03/04/2011, 12:53
 
Fecha de Ingreso: junio-2010
Ubicación: Huelva
Mensajes: 24
Antigüedad: 14 años, 6 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.
  #2 (permalink)  
Antiguo 04/04/2011, 05:40
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 15 años
Puntos: 65
Respuesta: Añadir evento a un objeto creado en tiempo de ejecucion

para eventos creados dinamicamente usa el método live

Código Javascript:
Ver original
  1. $("#menus option:selected").each(function () {
  2.             $num = $(this).text();      
  3.         });

este bucle no hace falta, con .val() obtenes el valor del select
Código Javascript:
Ver original
  1. $num = $(this).val();
this hace referencia al select y lo mismo para los submenus
  #3 (permalink)  
Antiguo 04/04/2011, 07:57
 
Fecha de Ingreso: junio-2010
Ubicación: Huelva
Mensajes: 24
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Añadir evento a un objeto creado en tiempo de ejecucion

¡Muchísimas gracias!
Me funcionó, gracias a la gente de este foro estoy consiguiendo sacar adelante el proyecto espero poder enseñároslo de aquí a un mes.
Te mando karma.

Etiquetas: change(), eventos, jquery, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:36.