Foros del Web » Programando para Internet » Jquery »

"lanzar" una función para dos div diferentes para que se comporten igual

Estas en el tema de "lanzar" una función para dos div diferentes para que se comporten igual en el foro de Jquery en Foros del Web. Hola forer@s necesito de su ayuda una vez mas soy principiante en jquery, ya he usado varios plugins y en ocasiones he logrado adaptarlos a ...
  #1 (permalink)  
Antiguo 06/08/2012, 08:44
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
"lanzar" una función para dos div diferentes para que se comporten igual

Hola forer@s

necesito de su ayuda una vez mas

soy principiante en jquery, ya he usado varios plugins y en ocasiones he logrado adaptarlos a mis necesidades, pero esta vez tratare de hacer lo siguiente:

quiero aprovechar jquery circle http://jquery.malsup.com/cycle/

hacer una transición de imágenes, con el efecto fade, que tenga botón de atrás y siguiente, que me indique con bullets cuantas imagen hay y en cual estoy y que me permita cambiar de imagen directamente

esto lo facilita mucho jquery circle

el problema es que por cada imagen necesito poner un div con una descripción pero cada descripción debe pasar correspondientemente con su imagen y si se llega a dar clic al botón atrás de las imágenes que la descripción de la misma también cambie, si se selecciona una imagen que su descripción sea cambiada también, es decir,

que los controles que afectan a las imágenes afecten también al div con la descripción.

espero haberme dado a entender, no se como se puede "lanzar" una función para dos div diferentes para que se comporten igual

gracias
  #2 (permalink)  
Antiguo 06/08/2012, 11:41
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
cambiar de color bullet en la imagen activa

Hola!!

llevo un gran avance ya pude controlar ambos divs con los mismo "botones"

de hecho mi galeria esta casi lista, excepto por un detalle

agregue que por cada imagen me aparezca un bullet (bolita) en lugar que me apareciera el boton con el numero de imagen,

le quiero agregar que cuando pase la imagen el bullet sea de otro color, es decir, el bullet correspondiente a la imagen "activa" (que se esta mostrando en ese momento) sea de otro color.

este es mi script:

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.         /*trasicion de imagenes*/
  3.         $(function() {
  4.             var bc = $('#buttonContainer'); /*contenedor de bullet's de navegacion*/
  5.             var $imagenes = $('#deptos').cycle({ /*instancia para el efecto de las imagenes*/
  6.                 fx: 'fade',
  7.                 speed: 3000,
  8.                 next:   '#next',
  9.                         prev:   '#prev'
  10.             });
  11.             var $descripciones = $('#caja_deptos').cycle({ /*instancia para el efecto de las descripciones*/
  12.                 fx: 'fade',
  13.                 speed: 3000,
  14.                 next:   '#next',  /*al poner los mismos id me controla los dos divs*/
  15.                         prev:   '#prev'
  16.             });
  17.             $imagenes.children().each(function(i) { /*funcion hace que por cada imagen se asigne un bullet*/
  18.                 // $('<input type="button" value="'+(i+1)+'" />')
  19.                 $('<img src="images/bullet_p.png" />')
  20.                     .appendTo(bc).click(function() {
  21.                         $imagenes.cycle(i);  /*aqui y la linea de abajo me permite que al oprimir cualquier bullet se cambien los 2 divs correspondientes*/
  22.                         $descripciones.cycle(i);
  23.                         return false;
  24.                 });
  25.             });
  26.             $imagenes.children().each(function() { /*funcion que me muestra los titulos de las imagenes*/
  27.                 alternate = $(this).find('img').attr('alt');
  28.                 $(this).append('<div id="caption">'+alternate+'</div>');
  29.             });
  30.         });
  31.     });

el html:

Código HTML:
<div id="deptos">
     <a href="#"><img src="ruta.imagen1.jpg" alt="imagen 1" /></a>
     <a href="#"><img src="ruta.imagen2.jpg" alt="imagen 2" /></a>
     <a href="#"><img src="ruta.imagen3.jpg" alt="imagen 3" /></a>
     <a href="#"><img src="ruta.imagenn.jpg" alt="imagen n" /></a>
</div>
<div id="buttonContainer"></div>
 <div id="next"></div>
 <div id="prev"></div>
<div id="caja_deptos">
     <div>Descripcion de la imagen 1</div>
     <div>Descripcion de la imagen 2</div>
     <div>Descripcion de la imagen 3</div>
     <div>Descripcion de la imagen n</div>
</div> 
Estuve leyendo los ejemplos y las faqs de jquery cyrcle y me encontre esta funcion que creo que me puede ayudar pero no se como aplicarla:

Código Javascript:
Ver original
  1. function onAfter(curr,next,opts) {
  2.     var info = 'Image ' + (opts.currSlide + 1) + ' of ' + opts.slideCount;
  3.     $('#info').html(info);
  4. }
  5. <div id="info"></div>

lo que hace es poner en en el div info Imagen 1 de 10 obviamente dependiendo de la imagen en la que se encuentre la transicion, si esta en la 5 dice Imagen 5 de 10

mi idea es aprovechar que identifica en que imagen "se encuentra" con esto (opts.currSlide + 1) y de alguna manera asignarle mi imagen de bullet de diferente color,

pero como les comento no se como hacer esto.

Si alguien me puede aconsejar se lo agradecería mucho

Última edición por catpaw; 06/08/2012 a las 11:47
  #3 (permalink)  
Antiguo 07/08/2012, 08:50
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: "lanzar" una función para dos div diferentes para que se comporten igual

Ta' feo contestarse uno mismo, pero en fin, aca esta la solucion:

Galería (hecha con jquery cyrcle) dos divs diferentes, uno con las imagenes, el titulo correspondiente de la imagen (traído del alt) los controles next, prev y la paginacion con bullets y el otro div con la una descripción de la imagen correspondiente; todo controlado por los mismos controles de navegacion:

Código Javascript:
Ver original
  1. $(function() {
  2.     $('#deptos').cycle({ /*instancia para el efecto de las imagenes*/
  3.         fx: 'fade',
  4.         speed: 4000,
  5.         next:   '#next',
  6.             prev:   '#prev',
  7.         pager: '#buttonContainer',
  8.         pagerAnchorBuilder: function(i) {
  9.             return '<a href="#"></a>';
  10.         }
  11.     });
  12.     $('#caja_deptos').cycle({ /*instancia para el efecto de las descripciones*/
  13.         fx: 'fade',
  14.         speed: 4000,
  15.         next:   '#next',
  16.             prev:   '#prev',
  17.         pager: '#buttonContainer',
  18.         pagerAnchorBuilder: function(i) {
  19.             return $('#buttonContainer a:eq('+i+')');
  20.         }
  21.     });
  22.     $imagenes.children().each(function() { /*funcion que me muestra los titulos de las imagenes*/
  23.         alternate = $(this).find('img').attr('alt');
  24.         $(this).append('<div id="caption">'+alternate+'</div>');
  25.     });

html:

Código HTML:
Ver original
  1. <div id="deptos">
  2.         <a href="#"><img src="image1.jpg" alt="titulo1"/></a>
  3.         <a href="#"><img src="image2.jpg" alt="titulo2"/></a>
  4.         <a href="#"><img src="image3.jpg" alt="titulo3"/></a>
  5.         <a href="#"><img src="imageN.jpg" alt="tituloN"/></a>
  6. </div>
  7. <div id="buttonContainer"></div>
  8. <div id="next"></div>
  9. <div id="prev"></div>
  10. <div id="caja_deptos">
  11.        <div>Descripcion1</div>
  12.        <div>Descripcion2</div>
  13.        <div>Descripcion3</div>
  14.        <div>DescripcionN</div>
  15. </div>

el css es "al gusto" XD

solo les pongo lo basico para la navegacion:

Código CSS:
Ver original
  1. #buttonContainer{
  2.     position:absolute;
  3.     z-index:100;
  4.     margin:-25px 0 0 250px;
  5. }
  6. #buttonContainer a{
  7.     display:inline-block;
  8.     margin:0 0 0 5px;
  9.     padding:11px 0 0 11px;
  10.     background:url(images/transicion/bullet_p.png) no-repeat;
  11. }
  12. #buttonContainer a.activeSlide{
  13.     background:url(images/transicion/bullet_a.png) no-repeat;
  14. }
  15. #buttonContainer a:hover{
  16.     background:url(images/transicion/bullet_h.png) no-repeat;
  17. }
  18. #buttonContainer a:focus{
  19.     outline: none;
  20. }

Saludos!!

Etiquetas: igual
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 14:16.