Foros del Web » Programando para Internet » Jquery »

problemas con los eventos jquery al usar ajax

Estas en el tema de problemas con los eventos jquery al usar ajax en el foro de Jquery en Foros del Web. hola soy nuevo en el foro, mi duda es la siguiente: ¿porque cuando se inserta en una pagina mediante $.ajax $.get $.post codigo html ya ...
  #1 (permalink)  
Antiguo 15/09/2012, 20:31
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
problemas con los eventos jquery al usar ajax

hola soy nuevo en el foro, mi duda es la siguiente:

¿porque cuando se inserta en una pagina mediante $.ajax $.get $.post codigo html ya sea desde php o del mismo sentencia jquery si ya tienes creado un evento para los botones por ejemplo, por que funciona con todos menos el que se ha creado con ajax?

me gustaria saber si eso ay alguna forma de solucionarlo ya sea alguna version de jquery u otra coasa con tal de no tener q crear las funciones y volver a llamarlas

gracias de ante mano
  #2 (permalink)  
Antiguo 16/09/2012, 01:35
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 20 años, 10 meses
Puntos: 13
Respuesta: problemas con los eventos jquery al usar ajax

Porque la función que recoge el evento está creada antes de crear el elemento del que se espera ese evento.
  #3 (permalink)  
Antiguo 16/09/2012, 03:07
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Información Respuesta: problemas con los eventos jquery al usar ajax

Hola itnas87, Bienvenido Foros del Web.

La primera pregunta ya la respondió autonotel.

Cita:
Iniciado por itnas87 Ver Mensaje
me gustaria saber si eso ay alguna forma de solucionarlo ya sea alguna version de jquery u otra coasa con tal de no tener q crear las funciones y volver a llamarlas ...
Ahora. Como solucionarlo? Pues hace bastante tiempo encontré muchas soluciones a este problema aquí en el foro, como por ejemplo estas dos:
  1. Cargar un fichero javascript con el método .getScript() de JQuery a finalizar una llamada asíncrona con ajax.
  2. Utilizar el socorrido método .live() de JQuery (actualmente obsoleto) para poder capturar los eventos de los elementos añadidos asíncronamente.

Entonces... ¿Cual escoger?

El primero lo utilizaba para cargar nuevamente el .js y que considere los nuevos elementos.

En cuanto al segundo, dejé de utilizarlo rotundamente cuando leí el siguiente artículo: Porqué no debemos usar nunca jQuery Live.

Lo mejor es utilizar el método .on() para asociar eventos. Puedes leer sobre dicho método y su contrario/complementario .off() para eliminar eventos en este artículo.

Te doy una idea de como utilizar .on() con el siguiente ejemplo.

Código Javascript:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>@GBreagan</title>
  6. <script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
  7. <script>
  8. var newLink = '<a class="lnk" href="#">[Clickme!]</a> <br>';
  9. $(document).on('ready',function() {
  10.     $('#myLinks').on('click', 'a.lnk', function(event){
  11.         event.preventDefault();
  12.         alert('Clicked!');
  13.     });
  14.     $('#add').on({
  15.         click:function(){
  16.             $('#myLinks').append(newLink);
  17.         }
  18.     });
  19. });
  20. </script>
  21. </head>
  22. <body>
  23. <input type="button" id="add" value="Add new link">
  24. <div id="myLinks">
  25.    
  26. </div>
  27. </body>
  28. </html>

<!-- EDITO-->
Necesitas como mínimo la versión 1.7 de JQuery para hacer uso de .on() y .off().
<!--/EDITO -->

Última edición por gebremswar; 16/09/2012 a las 03:15
  #4 (permalink)  
Antiguo 16/09/2012, 08:19
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problemas con los eventos jquery al usar ajax

Gracias por su respuesta, pero no se si es que no se como se hace o no esta bien echo por eso os dejo parte del codigo que uso.

aqui os dejo el codigo donde desde ajax se inserta dentro de otro div llamado .qbox desde un archivo php.
Código HTML:
Ver original
  1. <div>
  2.         <img class="crr" src="images/icons/cls.png" title="Cerrar">
  3.     </div>

aki el codigo javascript para que cuando se pulse la imagen se cierre div.qbox
Código Javascript:
Ver original
  1. $("img.crr").on("click", function(){
  2.         $("div.qbox").hide();
  3.     });

también he probado este código javascript
Código Javascript:
Ver original
  1. $("img").on("click",".crr", function(){
  2.         $("div.qbox").hide();
  3.     });

La versión de jquery que estoy utilizando es la ultima 1.8.1

De nuevo gracias de ante mano.
  #5 (permalink)  
Antiguo 16/09/2012, 11:11
 
Fecha de Ingreso: enero-2012
Ubicación: Santiago de Surco, Lima - Perú
Mensajes: 266
Antigüedad: 12 años, 3 meses
Puntos: 57
Respuesta: problemas con los eventos jquery al usar ajax

Prueba con esto:

Código Javascript:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Multi Form Edit</title>
  6. <script src="http://code.jquery.com/jquery-1.8.1.min.js"></script>
  7. <script>
  8. var newImg = '<div><img class="crr" src="http://groups.viadeo.com/template/images/global/dialogs/close-button.png" title="Cerrar"></div>';
  9. $(document).on('ready',function() {
  10.     $('#add').on({
  11.         click:function(){
  12.             $('.qbox').append(newImg);
  13.         }
  14.     });
  15.     $('div.qbox').on("click", 'img.crr', function(){
  16.         $("div.qbox").hide();
  17.     });
  18. });
  19. </script>
  20. </head>
  21. <body>
  22. <input type="button" id="add" value="add new image">
  23. <div class="qbox">
  24. </div>
  25. </body>
  26. </html>

Coméntanos.
  #6 (permalink)  
Antiguo 30/09/2012, 05:32
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problemas con los eventos jquery al usar ajax

Muchas gracias por esta solución pero debido a mi reciente conocimientos me ha creado una duda que son las siguientes

Estas tres forma de que jquery lea el documento para hacer las diferente instrucciones son iguales o hay alguna diferencia entre ellas.
Código Javascript:
Ver original
  1. $(document).on("ready",function(){
  2.                 // aqui instrucciones
  3.         });
  4.     $(document).ready(function(){
  5.                 // aqui instrucciones
  6.         });
  7.     $(function(){
  8.                 // aqui instrucciones
  9.         });


he leido que a un mismo se le puede asignar diferente funciones a distintos eventos, esto es lo que teniamos.
Código Javascript:
Ver original
  1. $("div.qbox").on("click","img.crr",function(){
  2.         $("div.qbox").hide();
  3.     });

ESTE SERA DICHA ESTRUTURA PARA HACER UNA FUNCION POR EVENTO
Código Javascript:
Ver original
  1. $("div.qbox").on({
  2.         click: function(){
  3.             $("div.qbox").hide();
  4.         },
  5.     });

me gustaria saber como se puede hacer dicha estructura puesto que e probado por probar pero siguiendo la estructura pero ninguna me a funcionado:
Código Javascript:
Ver original
  1. $("div.qbox").on("img.crr",{
  2.         click: function(){
  3.             $("div.qbox").hide();
  4.         },
  5.         mouseover: function(){
  6.             // otra instruccion de cabiar de imagen
  7.         }
  8.     });
  9.  
  10.     $("div.qbox").on("click mouseover","img.crr",{
  11.         click: function(){
  12.             $("div.qbox").hide();
  13.         },
  14.         mouseover: function(){
  15.             // otra instruccion de cabiar de imagen
  16.         }
  17.     });

Última edición por itnas87; 30/09/2012 a las 05:42
  #7 (permalink)  
Antiguo 30/09/2012, 17:48
Avatar de jlomss  
Fecha de Ingreso: diciembre-2008
Mensajes: 38
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: problemas con los eventos jquery al usar ajax

Hola, disculpen alguno ha usado, uploadify 3.2?? no puedo insertar en mysql por medio de php el nombre de la imagen subida, podrian ayudarme por favor?? gracias por su tiempo
  #8 (permalink)  
Antiguo 01/10/2012, 07:39
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problemas con los eventos jquery al usar ajax

No, lo siento no lo he utilizado nunca pero si tendre que utilizarlo mas adelante, lo q no se si usare o no upladify 3.2

Pero podria subir archivos con otro aplicacion yo tengo vista esta

http://www.w3schools.com/php/php_file_upload.asp
  #9 (permalink)  
Antiguo 01/10/2012, 07:40
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problemas con los eventos jquery al usar ajax

Cita:
Iniciado por jlomss Ver Mensaje
Hola, disculpen alguno ha usado, uploadify 3.2?? no puedo insertar en mysql por medio de php el nombre de la imagen subida, podrian ayudarme por favor?? gracias por su tiempo
No, lo siento no lo he utilizado nunca pero si tendre que utilizarlo mas adelante, lo q no se si usare o no upladify 3.2

Pero podria subir archivos con otro aplicacion yo tengo vista esta es simple pero se puede modificar si ya sabes utilizar php,

http://www.w3schools.com/php/php_file_upload.asp
  #10 (permalink)  
Antiguo 01/10/2012, 07:51
 
Fecha de Ingreso: septiembre-2012
Mensajes: 17
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: problemas con los eventos jquery al usar ajax

Espsero que te sirva. Debido a mi reciente conocimientos sobre .on() me ha creado una duda que son las siguientes

he leido que a un mismo se le puede asignar diferente funciones a distintos eventos, esto es lo que teniamos.
Código Javascript:
Ver original
  1. $("div.qbox").on("click","img.crr",function(){
  2.          $("div.qbox").hide();
  3.     });


ESTE SERA DICHA ESTRUTURA PARA HACER UNA FUNCION POR EVENTO

Código Javascript:
Ver original
  1. $("div.qbox").on({
  2.          click: function(){
  3.               $("div.qbox").hide();
  4.          },
  5.     });


me gustaria saber como se puede hacer dicha estructura puesto que e probado por probar pero siguiendo la estructura pero ninguna me a funcionado:

Código Javascript:
Ver original
  1. $("div.qbox").on("img.crr",{
  2.           click: function(){
  3.                $("div.qbox").hide();
  4.           },
  5.           mouseover: function(){
  6.                // otra instruccion de cabiar de imagen
  7.           }
  8.      });
  9.  
  10.      $("div.qbox").on("click mouseover","img.crr",{
  11.           click: function(){
  12.                $("div.qbox").hide();
  13.           },
  14.           mouseover: function(){
  15.                // otra instruccion de cabiar de imagen
  16.           }
  17.      });

Estas tres forma de que jquery lea el documento para hacer las diferente instrucciones son iguales o hay alguna diferencia entre ellas.

Código Javascript:
Ver original
  1. $(document).on("ready",function(){
  2.            // aqui instrucciones
  3.     });
  4.     $(document).ready(function(){
  5.            // aqui instrucciones
  6.     });
  7.     $(function(){
  8.            // aqui instrucciones
  9.     });

Etiquetas: ajax, eventos, funcion, html, php, usar
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 15:55.