Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Plegar y desple

Estas en el tema de Plegar y desple en el foro de Frameworks JS en Foros del Web. Hola, tengo una duda respecto a jquery. Tengo una funcion para plegar y desplegar un div al pulsar un botón, esto mismo se repite a ...
  #1 (permalink)  
Antiguo 23/06/2009, 11:01
 
Fecha de Ingreso: septiembre-2007
Mensajes: 47
Antigüedad: 16 años, 7 meses
Puntos: 0
Plegar y desple

Hola,

tengo una duda respecto a jquery.

Tengo una funcion para plegar y desplegar un div al pulsar un botón, esto mismo se repite a lo largo de todo el sitio.

Mi pregunta es como puedo modificar esta función para que en vez de personalizarla para cada uno de los divs, sea generica para todos ellos y poder hacer la acción sobre todos estos divs en vez de hacer una función para cada uno de ellos. No se si me he explicado bien jeje!

Yo tengo algo asi para cada caso:

$("#boton").click(function(){

$("#capa").slide('fast')

});


y luego en el html, algo asi:

<p class="boton-verde" id="boton"><input type="submit" value="configurar precio" id="configurar-precio" /></p>

<div class="configurar-precio">bla bla bla</div>


Muchas gracias!
  #2 (permalink)  
Antiguo 23/06/2009, 11:44
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Plegar y desple

Mensaje movido al foro de Frameworks desde Javascript.

Saludos,
  #3 (permalink)  
Antiguo 23/06/2009, 13:32
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: Plegar y desple

Utiliza un selector ID para el objeto que dispara la acción click y un selector CLASE para los objetos que recibirán la acción:

Código:
// La acción la aplica el botón con id="configurar-precio"
// sobre todos los divs de clase="configurar-precio"
$("#configurar-precio").click(function(){
      $(".configurar-precio").slide('fast')
   });
HTML:
Código:
<p id="boton-verde">
   <input type="submit" value="configurar precio" id="configurar-precio" />
</p>

<div class="configurar-precio">
      bla bla bla...
</div>

<div class="configurar-precio">
      ble ble ble...
</div>

<div class="configurar-precio">
      bli bli bli...
</div>
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #4 (permalink)  
Antiguo 24/06/2009, 09:31
 
Fecha de Ingreso: septiembre-2007
Mensajes: 47
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Plegar y desple

Pero con ese código, si en una misma página tengo dos o más casos de estos que digo, para desplegar y plegar, al pulsar el boton se desplegarian todos,no? Y yo lo que quiero que se despliegue el div que esta inmediatamente posterior a ese boton.
No es asi?
Muchas gracias.
  #5 (permalink)  
Antiguo 24/06/2009, 16:08
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: Plegar y desple

Es lo que entendí en tu pregunta... ahora me quedó mas claro... dame dos minutos
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #6 (permalink)  
Antiguo 24/06/2009, 18:19
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: Plegar y desple

Upss! tardé bastante más de 2 minutos... perdón los clientes son primero

Utiliza each para ejecutar una función en contexto de cada elemento encontrado.

Código javascript:
Ver original
  1. $(document).ready(function(){
  2. // Declaramos la función para cada botón de clase "configurar"
  3. $(".configurar").each(function(){
  4. // Declaramos una variable "id" para sacar el valor del atributo del botón actual
  5. var id = $(this).attr("id");
  6. // Pasamos la variable obtenida como un parametro más del selector
  7. $(".configurar[id="+id+"]").click(function(){
  8. // Otra vez, pasamos la variable para definir los parámetros del callback
  9. // de nuestra funcion
  10. $(".precios[name="+id+"]").slide("fast");
  11. })
  12. })
  13. });

El HTML sería asi:
Código HTML:
<p>
<input type="submit" value="configurar precio uno" class="configurar" id="precio1" /><br />
<input type="submit" value="configurar precio dos" class="configurar" id="precio2" /><br />
<input type="submit" value="configurar precio tres" class="configurar" id="precio3" /><br />
</p>

<div class="precios" name="precio1">
bla bla bla...
</div>

<div class="precios" name="precio2">
ble ble ble...
</div>

<div class="precios" name="precio3">
bli bli bli...
</div> 
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #7 (permalink)  
Antiguo 25/06/2009, 17:27
Avatar de eall  
Fecha de Ingreso: noviembre-2008
Ubicación: Concepcion
Mensajes: 127
Antigüedad: 15 años, 6 meses
Puntos: 8
Respuesta: Plegar y desple

si es el div que está despues del boton utiliza el selector $(tuboton + div) y así tomará solo el div que siguie despues del boton

Código javascript:
Ver original
  1. $("input").click(function(){
  2. //busca el botón pulsado y al siguiente elemento con la clase configurar-precio le genera el efecto.
  3.       $("#" + $(this).attr("id") + " + .configurar-precio").slide('fast')
  4.    });

espero te sirva
__________________
tutoriales xajax, jQuery, PHP y otros en mi blog
  #8 (permalink)  
Antiguo 25/06/2009, 23:22
Avatar de arthpix  
Fecha de Ingreso: diciembre-2003
Ubicación: Cancún
Mensajes: 2.340
Antigüedad: 20 años, 4 meses
Puntos: 93
Respuesta: Plegar y desple

eall, ofreces soluciones bien sencillas y fáciles de entender. Ya tienes un lector más de tu blog
__________________
Antes de hacer rabietas infórmate: Linux != Windows
  #9 (permalink)  
Antiguo 26/06/2009, 03:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 47
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Plegar y desple

OK, voy a probarlo y os digo. Muchas gracias!!
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 05:58.