Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/04/2010, 23:12
Avatar de cristian_cena
cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Como expandir/contraer un elemento padre haciendo click en uno de sus hijos?

Hola, resulta que quiero que un div se muestre con un efecto deslizante solo cuando se haga click en uno de sus hijos.

Al div padre le doy la id "contenedor" y al hijo encargado de mostrarlo le doy la id "toolsRight" (al otro hijo que no interviene en el efecto le doy la id "toolsLeft"), aquí su html:

Código HTML:
<div id="contenedor">
<div id="toolsLeft"></div>
<div id="toolsRight"></div>
</div> 
Como pueden ver en el siguiente css, a contenedor lo mantengo con un width:83px; que es el resultado de la suma del ancho de toolsLeft + toolsRight.
Código:
            #contenedor{
            overflow:hidden; 
            background-image:url(img/menu/degradado.png);
            background-repeat:no-repeat;
            width:83px; /*372px*/
            height:29px;
            position:absolute;
            top:0px;
            left:0px;
            }
            #toolsLeft {
            float:left;
            background-image:url(img/menu/toolsLeft.png);
            background-repeat:no-repeat;
            background-position:top;
            width:53px; height:27px;
            }
            #toolsRight {
            float:right;
            background-image:url(img/menu/toolsRight.png);
            background-repeat:no-repeat;
            background-position:top;
            width:30px; height:27px;
            overflow:hidden;
            }
La idea es que el ancho de contenedor crezca/decrezca cuando se haga click en toolsRight, haciéndolo con un efecto deslizante, para ello hice lo siguiente:

Código:
$(document).ready(function(){
    $("#toolsRight").click(function() {    
        $("#contenedor").animate({width: '372px', opacity: '1'}, "slow");    
    });
    $("#toolsRight").click(function() {
        $("#contenedor").animate({width: '83px', opacity: '1'}, "slow");

    });
});
Bien, el tema está en que al hacer click en toolsRight, contenedor crece y decrece al mismo tiempo.

Lo que no puedo lograr es que el efecto "pare" cuando contenedor alcanza un width:372px; y que luego al hacer click nuevamente en toolsRight se vuelva a reproducir, esta vez "parando" cuando contenedor llegue a un width:83px;

¿Alguna ayudita, articulo o link? desde ya muchisimas gracias, espero haber explicado bien el problema.

Un saludo