Foros del Web » Programando para Internet » Jquery »

aplicar método ON a función jquery

Estas en el tema de aplicar método ON a función jquery en el foro de Jquery en Foros del Web. buenas noches, tengo este código @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original jQuery ( window ) . load ( function ( ) {     ...
  #1 (permalink)  
Antiguo 07/02/2015, 17:17
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
aplicar método ON a función jquery

buenas noches,

tengo este código
Código Javascript:
Ver original
  1. jQuery(window).load(function() {
  2.             $('.gallery').each(function() { // the containers for all your galleries
  3.                 $(this).magnificPopup({
  4.                     delegate: 'a', // the selector for gallery item
  5.                     type: 'image',
  6.                     gallery: {
  7.                         enabled:true
  8.                     }
  9.                 });
  10.             });
  11.         });

Código HTML:
Ver original
  1. <div class="gallery">
  2.                     <a title="títulodelaimagen" href="rutadelaimagen">nombredelaimagen</a>
  3.                 </div>

Le debería aplicar el método ON para usarlo con click.

Necesito usuarlo para cuando se hace una recarga con ajax después de la carga inicial de la página. Tendría que combinar on y each para aplicarlo a todos los elementos que se cargan con ajax.

saludos,
josé carlos.

Última edición por evoarte; 07/02/2015 a las 17:23
  #2 (permalink)  
Antiguo 16/02/2015, 04:33
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: aplicar método ON a función jquery

hola,

voy a intentar explicarlo mejor, utilizo magnific popup para ver las imágenes con un slider, cuando las imágenes se muestran en la carga inicial de la página toda va bien,

el problema viene cuando una vez cargada inicialmente la página mediante ajax, muestro el enlace a varias imágenes que pretendo visualizar con un slider

Código Javascript:
Ver original
  1. <script type="text/javascript" async defer src="jquery-1.7.2.min.js"></script>
  2. <script type="text/javascript" async defer src="jquery.magnific-popup.min.js"></script>
  3.  
  4.         jQuery(window).load(function() {
  5.             $('.gallery').each(function() { // the containers for all your galleries
  6.                 $(this).magnificPopup({
  7.                     delegate: 'a', // the selector for gallery item
  8.                     type: 'image',
  9.                     gallery: {
  10.                         enabled:true
  11.                     }
  12.                 });
  13.             });
  14.         });

Código HTML:
Ver original
  1. <div class="gallery">
  2. <a title="títulodelaimagen1" href="rutaimagen1">nombredelaimagen1</a>
  3. <a title="títulodelaimagen2" href="rutaimagen2">nombredelaimagen2</a>
  4. <a title="títulodelaimagen3" href="rutaimagen3">nombredelaimagen3</a>
  5. </div>

Y lo he intentado de mil maneras,
- incluyendo el método ON y utilizando la última versión de jquery, actualizando a la última versión de magnific popup, con un resultado infructuoso.

El código que muestro es el que funciona cuando las imágenes se cargan en la carga inicial

gracias,
josé carlos.
  #3 (permalink)  
Antiguo 16/02/2015, 16:07
Avatar de andresgarciadev  
Fecha de Ingreso: junio-2013
Mensajes: 218
Antigüedad: 10 años, 10 meses
Puntos: 32
Respuesta: aplicar método ON a función jquery

tendrias q mostrar el codigo del ajax para ver que estas haciendo mal, en el ajax les vuelves a aplicar
.magnificPopup()
a todos esos nuevos elementos creados?
  #4 (permalink)  
Antiguo 16/02/2015, 17:35
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: aplicar método ON a función jquery

Cita:
Iniciado por andresgarciadev Ver Mensaje
tendrias q mostrar el codigo del ajax para ver que estas haciendo mal, en el ajax les vuelves a aplicar
.magnificPopup()
a todos esos nuevos elementos creados?
No, no vuelvo a aplicar .magnificPopup();
He intentado utilizar el metodo .on de jquery,
pero no tengo los conocimientos suficientes.

saludos,
josé carlos.
  #5 (permalink)  
Antiguo 17/02/2015, 06:36
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: aplicar método ON a función jquery

hola,

como me veo incapaz de aplicar correctamente el método .on() de jquery a los enlaces <a> con class .gallery que se cargan dinámicamente con ajax, he intentado ejecutar el código jquery que forma la galería una vez cargados los datos por ajax de la siguiente forma, pero sin resultado:

Código Javascript:
Ver original
  1. Cargamos el HTML recibido                           */
  2. function leerDatosTX()
  3.     {
  4.         if (oXML.readyState==1)
  5.             {
  6.                 document.getElementById("cargando").style.display= 'block';
  7.                 document.getElementById("cargando").innerHTML = '<img src="http://www.urldelapágina.com/images/ajax/ajax-loader.gif">';
  8.                 document.getElementById("documentos").style.display = 'none';
  9.             }
  10.         else if (oXML.readyState==4)
  11.             {
  12.                 var cadena = oXML.responseText;
  13.                 var mensajes = cadena.split(",");
  14.                 var accion = mensajes[0];
  15.                 if (accion == 'mensajes')
  16.                     {
  17.                         for ( i=1;i<mensajes.length;i++ )
  18.                             {
  19.                                 alert(mensajes[i]);
  20.                             }
  21.                         document.getElementById("cargando").style.display= 'none';
  22.                         document.getElementById("cargando").innerHTML= '';
  23.                         document.getElementById("documentos").style.display= 'block';
  24.                         ga('send', 'pageview', urlGO.replace("http://www.urldelapágina.com",""));
  25.                     }
  26.                 else if (accion == 'alertas')
  27.                     {
  28.                         var atextodi = "";
  29.                         for ( i=1;i<mensajes.length;i++ )
  30.                         {
  31.                             atextodi += mensajes[i] + "<br /> ";
  32.                         }
  33.                         document.getElementById("cargando").style.display= 'none';
  34.                         document.getElementById("cargando").innerHTML= '';
  35.                         document.getElementById("documentos").style.display= 'block';                      
  36.                         document.getElementById(capa).innerHTML = atextodi;
  37.                         ga('send', 'pageview', urlGO.replace("http://www.urldelapágina.com",""));
  38.                     }                  
  39.                 else if (accion == 'redireccionGU')
  40.                     {
  41.                         cadenaURLtx(mensajes[1],mensajes[2],mensajes[3]);
  42.                     }
  43.                 else if (accion == 'redireccionGO')
  44.                     {
  45.                         OajaxT(mensajes[1]);
  46.                     }
  47.                 else
  48.                     {
  49.                         document.getElementById("cargando").style.display= 'none';
  50.                         document.getElementById("cargando").innerHTML= '';
  51.                         document.getElementById("documentos").style.display= 'block';
  52.                         document.getElementById("documentos").innerHTML=oXML.responseText;
  53.                         ga('send', 'pageview', urlGO.replace("http://www.urldelapágina.com",""));
  54.                         if ( $('.gallery').length > 0 )
  55.                         {
  56.                             console.log('Hay ' + $('.gallery').length + ' elementos imagen en el documento');                      
  57.                             $('.gallery').each(function() { // the containers for all your galleries
  58.                                 $(this).magnificPopup({
  59.                                     delegate: 'a', // the selector for gallery item
  60.                                     type: 'image',
  61.                                     gallery: {
  62.                                     enabled:true
  63.                                     }
  64.                                 });
  65.                             });                        
  66.                         }                      
  67.                     }
  68.             }
  69.     }

el código que he añadido es este, no hay error, pero creo que no se ejecuta por que no se muestra el mensaje del número de imágenes (console.log):
Código Javascript:
Ver original
  1. if ( $('.gallery').length > 0 )
  2.                         {
  3.                             console.log('Hay ' + $('.gallery').length + ' elementos imagen en el documento');                      
  4.                             $('.gallery').each(function() { // the containers for all your galleries
  5.                                 $(this).magnificPopup({
  6.                                     delegate: 'a', // the selector for gallery item
  7.                                     type: 'image',
  8.                                     gallery: {
  9.                                     enabled:true
  10.                                     }
  11.                                 });
  12.                             });                        
  13.                         }

agradecería vuestra ayuda,
un saludo,
josé carlos.

Última edición por evoarte; 17/02/2015 a las 06:56
  #6 (permalink)  
Antiguo 17/02/2015, 11:24
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: aplicar método ON a función jquery

$(".gallery").on('click',function(){ });

Así mapeas todo lo que tenga la class gallery y le asignas la función que quieras al hacer click en el objeto.

Que es lo que no entiendes exactamente de esa función?

Tengo prisa y estoy desde el móvil, siento poder ayudarte más.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #7 (permalink)  
Antiguo 17/02/2015, 13:21
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 21 años, 9 meses
Puntos: 2
Respuesta: aplicar método ON a función jquery

estos códigos los añado justo después de procesar la petición ajax, una vez cargados los enlaces <a> con href="rutaimagen"

he sustituido el código añadido anterior, con el que no había resultado,:

Código Javascript:
Ver original
  1. if ( $('.gallery').length > 0 )
  2.                         {
  3.                             console.log('Hay ' + $('.gallery').length + ' elementos imagen en el documento');                      
  4.                             $('.gallery').each(function() { // the containers for all your galleries
  5.                                 $(this).magnificPopup({
  6.                                     delegate: 'a', // the selector for gallery item
  7.                                     type: 'image',
  8.                                     gallery: {
  9.                                     enabled:true
  10.                                     }
  11.                                 });
  12.                             });                        
  13.                         }

por este otro nuevo código, pero también sin resultado:

Código Javascript:
Ver original
  1. $(".gallery").on('click', function() {
  2.                             $('.gallery').each(function() { // the containers for all your galleries           
  3.                                 $(this).magnificPopup({
  4.                                     delegate: 'a', // the selector for gallery item
  5.                                     type: 'image',
  6.                                     gallery: {
  7.                                         enabled:true
  8.                                     }
  9.                                 });
  10.                             });
  11.                         });
  #8 (permalink)  
Antiguo 22/02/2015, 08:14
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: aplicar método ON a función jquery

Si con $(".gallery").on('click', function() { estas mapeando todos los objetos, no entiendo porque despues utilizas la funcion each.

Con esto tampoco te funciona?
Código Javascript:
Ver original
  1. $(".gallery").on('click', function() {
  2. $(this).magnificPopup({
  3.                                     delegate: 'a', // the selector for gallery item
  4.                                     type: 'image',
  5.                                     gallery: {
  6.                                         enabled:true
  7.                                     }
  8.                                 });
  9.                             });

Un saludo.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Etiquetas: Ninguno
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 19:04.