Foros del Web » Programando para Internet » Jquery »

Ejecutar varias funciones jquery en un mismo boton o enlace

Estas en el tema de Ejecutar varias funciones jquery en un mismo boton o enlace en el foro de Jquery en Foros del Web. Hola, A ver si alguien podría resolverme esta pequeña duda. Ahora mismo tengo un div que usa la funcion animate() para subir o bajar, todo ...
  #1 (permalink)  
Antiguo 17/06/2011, 07:42
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Ejecutar varias funciones jquery en un mismo boton o enlace

Hola,

A ver si alguien podría resolverme esta pequeña duda. Ahora mismo tengo un div que usa la funcion animate() para subir o bajar, todo me va perfectamente pero ¿cómo podría hacer la función de subir/bajar en un solo botón en vez de en dos? ¿es posible?

Esa es mi duda y aquí dejo el código con el que estoy trabajando.

Código HTML:
<html>
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript"> 
$(document).ready(function(){
  $("#bajar").click(function(){
    $(".captura").animate({height:500},"slow");
  });
});
$(document).ready(function(){
  $("#subir").click(function(){
    $(".captura").animate({height:150},"slow");
  });
});
</script> 
</head>
<body>
<span id="bajar">Bajar</span> | <span id="subir">Subir</span>
<br />
<div class="captura" style="height:150px;width:200px;position:relative;border: 5px solid #afafaf; background:#c1c1c1">
</body>
</html> 
Muchas gracias! (y siento si el título del post no es el adecuado para la pregunta)
  #2 (permalink)  
Antiguo 17/06/2011, 10:33
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Ejecutar varias funciones jquery en un mismo boton o enlace

Usá .toggle() :)
Código HTML:
Ver original
  1. <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4.   $("#subirbajar").toggle(function(){
  5.     $(".captura").stop().animate({height:500},"slow");
  6.   }, function(){
  7.     $(".captura").stop().animate({height:150},"slow");
  8.   });
  9. });
  10. </script>
  11. </head>
  12.   <span id="subirbajar">Bajar / Subir</span>
  13. <br />
  14. <div class="captura" style="height:150px;width:200px;position:relative;border: 5px solid #afafaf; background:#c1c1c1">
  15. </body>
  16. </html>


Notá que también agregué .stop() a la animación. Eso es importante porque si yo clickeo varias veces las animaciones se ejecutarán en orden cuantas veces yo haya clickeado, pero con .stop() la animación que se estaba ejecutando anteriormente se detiene.
__________________
nahueljose.com.ar
  #3 (permalink)  
Antiguo 17/06/2011, 10:43
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ejecutar varias funciones jquery en un mismo boton o enlace

Hola Naahuel, nuevamente gracias por todo, es lo que necesito :)... yo ya me estaba liando en algunas webs leyendo sobre if else y puff, lío.

Un saludo! :)
  #4 (permalink)  
Antiguo 17/06/2011, 15:50
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ejecutar varias funciones jquery en un mismo boton o enlace

Estoy de nuevo por aquí... a ver si puedo resolver lo siguiente... ya tengo los dos botones unificados en uno para poder hacer click en el mismo.

Ahora mi pregunta sería, ¿como podría dar una hoja de estilo diferente a cada estado?

Si no han expandido la ventana pues con css añadir una imagen tipo (+) y cuando hayan hecho click pues que aparezca otra imagen (-).

Muchas gracias por la ayuda :)
  #5 (permalink)  
Antiguo 17/06/2011, 15:56
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Ejecutar varias funciones jquery en un mismo boton o enlace

Podés usar clases y alternarlas con .toggleClass()

Código HTML:
Ver original
  1.   .captura{background:yellow;}
  2.   .azul{background:blue;}  
  3. <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6.   $("#subirbajar").toggle(function(){
  7.     $(".captura").stop().animate({height:500},"slow").toggleClass('azul');
  8.   }, function(){
  9.     $(".captura").stop().animate({height:150},"slow").toggleClass('azul');
  10.   });
  11. });
  12. </script>
  13. </head>
  14.   <span id="subirbajar">Bajar / Subir</span>
  15. <br />
  16. <div class="captura" style="height:150px;width:200px;position:relative;border: 5px solid #afafaf;">
  17. </body>
  18. </html>
__________________
nahueljose.com.ar
  #6 (permalink)  
Antiguo 17/06/2011, 16:04
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Ejecutar varias funciones jquery en un mismo boton o enlace

Ups, entendí mal. Esto es lo que querías?

Código HTML:
Ver original
  1.   .cerrado:after{
  2.     content:'  (+)';
  3.   }
  4.   .expandido:after{
  5.     content: '  (-)';
  6.   }
  7. <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
  8. <script type="text/javascript">
  9. $(document).ready(function(){
  10.   $("#subirbajar").toggle(function(){
  11.     $(this).removeClass('cerrado').addClass('expandido');
  12.     $(".captura").stop().animate({height:500},"slow");
  13.   }, function(){
  14.     $(this).removeClass('expandido').addClass('cerrado');
  15.     $(".captura").stop().animate({height:150},"slow");
  16.   });
  17. });
  18. </script>
  19. </head>
  20.   <span id="subirbajar" class="cerrado">Bajar / Subir</span>
  21. <br />
  22. <div class="captura" style="height:150px;width:200px;position:relative;border: 5px solid #afafaf; background:#c1c1c1">
  23. </body>
  24. </html>


Claro que estoy usando :after en CSS sólo para que lo veas, pero si lo querés hacer más compatibles con navegadores viejos podés usar imágenes de fondo:

Código CSS:
Ver original
  1. .cerrado{
  2.     background:url(imagen-con-mas.jpg);
  3.   }
  4.   .expandido{
  5.     background:url(imagen-con-menos.jpg);
  6.   }
__________________
nahueljose.com.ar
  #7 (permalink)  
Antiguo 18/06/2011, 07:20
 
Fecha de Ingreso: abril-2009
Mensajes: 24
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ejecutar varias funciones jquery en un mismo boton o enlace

Gracias, era lo que necesitaba :)

Ahora solo tengo que pelearme con el CSS

Gracias otra vez Naahuel

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