Comunidad de diseño web y desarrollo en internet online

Problema con eventos al hacer load

Citar            
MensajeEscrito el 30 Dic 2012 12:22 am
Hola Amigos,

Tengo un problema y necesito apoyo por favor.
:
Mi problema se presenta en la siguiente pagina:
http://www.innovanets.com/nevado/calzado/hombre/todo-terreno/xa-pro-3d-ultra-2-w-400.html

Donde uso un plugins jquery para el efecto del zoom, ahora por funcionalidad un usuario puede escoger un color (Lado derecho) y según el color seleccionado se cargan las vistas respectivas.

La carga de las vistas las hago por Load:
$('#product_view').load("<?php echo SITE_URL ?>inc/vistas.php?color_id="+options.id_color+"&producto="+options.producto).hide().fadeIn('slow');

En donde por unos parametros realizo la consulta sql y obtengo lo deseado, todo bien hasta ahi

El problema viene cuando cargo las nuevas vistas, ya que despues de esta acción el zoom deja de funcionar, no se que de manera influye el Load en esto, he tratado de buscar una solucion pero no lo consiguo.

Agredecere su ayuda.

Por Scarlet

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Dic 2012 01:15 pm
Utiliza el método .get, que por lo veo estás pasando valores por el enlace y variables de javascript, está bien, pero la forma correcta es utilizar, .get:

http://api.jquery.com/jQuery.get/

Saludos.

Por redigaffi

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 30 Dic 2012 02:19 pm
Gracias por la respuesta redigaffi

He probado haciendo el cambio pero el resultado es el mismo.
El cambio que hice fue sustituir la linea del load por:

Código :

$.get('<?php echo SITE_URL ?>inc/vistas.php', { color_id: options.id_color, producto: options.producto } , function(data) {
        $('#product_view').html(data);
      });


Pero funciona exactamente igual, obtengo las vistas del color seleccionado pero al cambiar de vista no se actualiza la imagen del zoom.

Yo en mi archivo vistas.php lo que hago tras la consulta es generar por cada vista este codigo:

Código :

<div class="product_view_img">
      <a href='javascript:void(0);' rel="{gallery: 'gallery1', smallimage: '<?php echo SITE_URL ?>images/products/normal/<?php echo $img_principal ?>',largeimage: '<?php echo SITE_URL ?>images/products/large/<?php echo $img_principal ?>'}">
      <img src="<?php echo SITE_URL ?>images/products/medium/<?php echo $img_principal ?>" alt="" border="0" style="border-color:#F00" />
      </a>
   </div>


Como veran por medio del atributo REL se envian las imagenes de deben cambiarse para el zoom (smallimage y largeimage) que estan asociadas a un <A> donde se encuentra la imagen del producto:

Código :

<div id="product">
               <h1 class="title"><?php echo utf8_encode($listado_producto["3"]) ?></h1>
               <span class="ref">Ref <?php echo utf8_encode($listado_producto["2"]) ?></span>
                <a href="<?php echo SITE_URL ?>images/products/large/<?php echo $img_principal ?>" [b]class="jqzoom" rel='gallery1' [/b] title="<?php echo utf8_encode($listado_producto["3"]) ?>" >
                   <div class="content_img">
                   <img src="<?php echo SITE_URL ?>images/products/normal/<?php echo $img_principal ?>" alt="" border="0" class="image_prod_principal" />
                    </div>
                </a>
            </div>


Asi funciona el plugin, y asi funciona de forma correcta al cargar la pantalla del producto, el problema viene cuando hago el cambio de vistas al seleccionar otro color, ahi ya no responde el cambio de imagenes al hacer clic en las vistas.

He tratado de rellamar el plugins dentro de vistas.php pero nada:

Código :

<!-- Zoom -->
<script src="<?php echo SITE_URL ?>js/jquery.jqzoom-core.js" type="text/javascript"></script>
<link rel="stylesheet" href="<?php echo SITE_URL ?>css/jquery.jqzoom.css" type="text/css">
<script type="text/javascript">
$(document).ready(function() {
   $('.jqzoom').jqzoom({
            zoomType: 'innerzoom',
            preloadImages: false,
            alwaysOn:false
     });
});
</script>


Solo funciona un js que he puesto para que cambie el color del borde en la imagen seleccionada:

Código :

<script type="text/javascript">
jQuery('.product_view_img img').click (function () {      
   $('.product_view_img img').css("border","solid #D6D6D6 1px");
   $(this).css("border","solid red 1px");
});
</script>


Alguna sugerencia!!

Por Scarlet

1 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 30 Dic 2012 06:18 pm
este tipo de cosas pasan cuando añades elementos a la página via ajax y no actualizas los plugins que deben actuar sobre esos elementos.

cuando haces esto:

Código Javascript :


$(document).ready(function() {

   $('.jqzoom').jqzoom({

            zoomType: 'innerzoom',

            preloadImages: false,

            alwaysOn:false

     });

});



estas poniendo al plugin a trabajar sobre los elementos que existen en ese momento en la página, si posteriormente agregas más, obviamente no va a funcionar por que el plugin no los tomo en cuenta al momento de llamarlo.

lo que tienes que hacer es actualizar el plugin en caso de que este tenga un método para este fin, o si no lo tiene, volverlo a llamar después de agregar nuevo contenido utilizando las funciones callback del método get de jquery.

el javascript cargado con ajax no se ejecuta como código, solo es cargado como texto, es por eso no funciona llamando el plugin desde vistas.php.

lo que debes hacer es más o menos esto:

Código Javascript :

$.get('<?php echo SITE_URL ?>inc/vistas.php', { color_id: options.id_color, producto: options.producto } , function(data) {

        $('#product_view').html(data);
        // acá vuelves a llamar al plugin
       $('.jqzoom').jqzoom({

            zoomType: 'innerzoom',

            preloadImages: false,

            alwaysOn:false

     });


      });

Por HtrMancera

Claber

342 de clabLevel

1 tutorial

Genero:Masculino  

Front-end Developer

chrome
Citar            
MensajeEscrito el 30 Dic 2012 07:53 pm
Gracias por tu respuesta HtrMancera;

Aunque tiene logica lo que indicas tras realizar el cambio no se soluciona, no entiendo a que se puede deber.

Por Scarlet

1 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.