Foros del Web » Programando para Internet » Jquery »

Cola de efectos en jQuery

Estas en el tema de Cola de efectos en jQuery en el foro de Jquery en Foros del Web. Hola gente, ¿qué tal? Les cuento que estoy avanzando de a poco con mis conocimientos de JavaScript y jQuery y me ha surgido un problema. ...
  #1 (permalink)  
Antiguo 13/05/2012, 19:59
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 16 años
Puntos: 26
Cola de efectos en jQuery

Hola gente, ¿qué tal?

Les cuento que estoy avanzando de a poco con mis conocimientos de JavaScript y jQuery y me ha surgido un problema. Supongamos que quiero que un elemento <div> cuadrado (en este caso de color azul) se alargue al hacerle clic, y, recién cuando haya terminado, otro <div> (de color rojo en mi ejemplo) también se alargue automáticamente hasta determinado tamaño. A continuación dejo los códigos:

HTML:
Código HTML:
<div id="azul"></div>
<div id="rojo"></div> 
CSS:
Código:
#azul, #rojo {height:50px; width:50px;}
#azul {background-color:blue;}
#rojo {background-color:red;}
JavaScript:
Código:
<script type="text/javascript">	
	$(document).ready(function() {
		$('#azul').click(function() {
			$(this).stop().animate({width:'100px'}, {duration:1000});
			$('#rojo').stop().animate({width:'300px'}, {duration:1000});
		});
	});
</script>
El inconveniente es que al hacer clic en el cuadrado azul, ambos (azul y rojo) se alargan simultáneamente, y es lo que no quiero. He estado leyendo sobre las colas de efectos y probé especificando un queue, pero no cambia nada (no sé si las colas sólo aplican al mismo elemento o puede ser con varios).

Un saludo y desde ya, gracias.
  #2 (permalink)  
Antiguo 13/05/2012, 20:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años
Puntos: 1532
Respuesta: Cola de efectos en jQuery

Cada función de animación de jQuery tiene un callback al que llama cuando finaliza la animación, sólo debes agregar la siguiente animación dentro de la función anónima que crees para dicho callback
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 13/05/2012, 20:10
Avatar de ryugen
Colaborador
 
Fecha de Ingreso: agosto-2008
Ubicación: Rosario, Santa Fe
Mensajes: 350
Antigüedad: 15 años, 10 meses
Puntos: 187
Respuesta: Cola de efectos en jQuery

En tu caso sería así
Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.         $('#azul').click(function() {
  3.             $(this).stop().animate({width:'100px'}, {duration:1000}, function(){
  4.                         //Función que se ejecuta al finalizar la animación de Azul
  5.                         $('#rojo').stop().animate({width:'300px'}, {duration:1000});
  6.  
  7.                    });
  8.            
  9.         });
  10.     });
  #4 (permalink)  
Antiguo 13/05/2012, 20:20
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 16 años
Puntos: 26
Respuesta: Cola de efectos en jQuery

¡Gracias por sus respuestas! Pero acabo de probar el código de ryugen y no pasa nada, sólo se alarga el <div> azul. Si coloco $('#rojo').stop().animate({width:'300px'}, {duration:1000}); fuera del callback de #azul, sí se anima (pero al mismo tiempo que #azul, como en el ejemplo que di primero).

EDITADO: Parece que ahora sí funciona como esperaba, sólo tenía que agregar la palabra "complete:" antes de la función. ¡Muchas gracias a ambos!

Etiquetas: cola, efectos, html, 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 08:34.