Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] append me quita los eventos

Estas en el tema de append me quita los eventos en el foro de Jquery en Foros del Web. Hola que tal? Un saludo para todos, bien intentare explicar mi problema. Tengo una tabla y le voy añadiendo filas con append.. El problema viene ...
  #1 (permalink)  
Antiguo 17/07/2014, 09:41
 
Fecha de Ingreso: junio-2014
Ubicación: D.F.
Mensajes: 42
Antigüedad: 9 años, 9 meses
Puntos: 0
append me quita los eventos

Hola que tal?
Un saludo para todos, bien intentare explicar mi problema.

Tengo una tabla y le voy añadiendo filas con append.. El problema viene cuando quiero hacer algo sobre esas filas aunque les ponga clases o id´s no acepta los eventos no me saca ni un alert.
Espero puedan ayudarme.. Muchas gracias de antemano
  #2 (permalink)  
Antiguo 17/07/2014, 10:08
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: append me quita los eventos

Muéstranos el código que has elaborado para poder ayudarte. Por favor, no olvides usar el highlight de JavaScript para mostrar el código.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 17/07/2014, 10:23
 
Fecha de Ingreso: junio-2014
Ubicación: D.F.
Mensajes: 42
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: append me quita los eventos

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.     $(document).ready(function(){
  3.         /**
  4.          * Funcion para añadir una nueva columna en la tabla
  5.          */
  6.         $("#add").on('click', function(){
  7.  
  8.             $(".tabla").append('<input type="text" class="llenar1"/>');
  9.         });
  10.        
  11.     });
  12.     $(document).ready(function()
  13. {
  14.     $('.llenar1').click(function()
  15.     {
  16.         event.preventDefault();
  17.     alert("prueba");
  18.     var data2 = $(this).attr("data-valor");
  19.     alert(data2);
  20.    
  21.        
  22.     });
  23. });
  24.     </script>
  25.    
  26.     <style>
  27.     #add, #del  {cursor:pointer;text-decoration:underline;color:#00f;}
  28.     </style>
  29. </head>
  30.  
  31. <body>
  32. <div id="add">pulsa aquí para añadir una nueva fila desde jquery</div>
  33. <div id="del">pulsa aquí para eliminar la ultima fila desde jquery</div>
  34. <p>
  35.     <table class="tabla" border=1>
  36.         <tr class='llenar1'>
  37.             <td>primera columma</td>
  38.             <td>segundo columna</td>
  39.             <input type='text' value='pueba' class='llenar1'/>
  40.             <!-- podemos añadir tantas columnas como deseemos -->
  41.             <!--<td>tercera columna</td>-->
  42.         </tr>
  43.                 <tr class='llenar1'>
  44.             <td>primera columma</td>
  45.             <td>segundo columna</td>
  46.             <input type='text' value='pueba' class='llenar1'/>
  47.             <!-- podemos añadir tantas columnas como deseemos -->
  48.             <!--<td>tercera columna</td>-->
  49.         </tr>
  50.     </table>
  #4 (permalink)  
Antiguo 17/07/2014, 10:24
 
Fecha de Ingreso: junio-2014
Ubicación: D.F.
Mensajes: 42
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: append me quita los eventos

las dos filas originales si me mandan el alert, pero el elemento agregado con append no
  #5 (permalink)  
Antiguo 17/07/2014, 11:06
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: append me quita los eventos

Eso sucede porque el método solo afecta a los elementos que cargaron al inicio, los que carguen después no se verán afectados pues el código JS ya se ejecutó.

Podrías hacerlo así:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     function aplicar(){
  3.         $('.llenar1').click(function(){
  4.             alert("prueba");
  5.         });
  6.     }
  7.    
  8.     $("#add").on('click', function(){
  9.         $(".tabla").append('<input type="text" class="llenar1"/>');
  10.         aplicar();
  11.     });
  12.  
  13.     aplicar();
  14. });

De este modo, cuando cargue la página, se ejecutará la función aplicar en la cual asignarás a todas las cajas de texto una función que mostrará un mensaje de alerta al darles un clic, pero también ejecutarás a la función aplicar cuando crees una nueva caja de texto, así ésta también se verá afectada.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #6 (permalink)  
Antiguo 17/07/2014, 11:11
 
Fecha de Ingreso: junio-2014
Ubicación: D.F.
Mensajes: 42
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: append me quita los eventos

Muchisimas gracias Alexis 88.. No tenia ni la mas minima idea de que se tendria que hacer asi.. Gracias :)
  #7 (permalink)  
Antiguo 17/07/2014, 15:34
 
Fecha de Ingreso: diciembre-2012
Mensajes: 249
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: append me quita los eventos

hola, tambien puedes usar la funcion addEventListener('click', funcion, true); a cada uno de los botones ya sea recorriendolos con un for o con el uso de la funcion each de underscore.js

es solo otra forma

Etiquetas: append, eventos, javascript
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 02:49.