Planteo la siguiente situación: Tengo 3 objetos: un panel lateral inicialmente oculto, un botón de menu siempre visible y una máscara con opacidad que oscurece el contenido al aparecer el panel. Para animar los elementos he usado Toggle. El comportamiento debe ser el siguiente: al pulsar el botón menú, aparece el panel, se osurece el contenido con la máscara y el botón se mueve un poco de derecha a izquierda. Al pulsar nuevamente en el botón o en la máscara el panel se oculta, desaparece la máscara y el botón vuelve a su posición inicial. Todo lo anterior lo hago con el siguiente código:
Código Java :
$('#b-menu,#mask').toggle(function(){ $('nav').stop().animate({left:'0'},'normal').addClass('sombra'); $('#b-menu').stop().animate({left:'204'},'slow'); $('#mask').fadeIn() },function(){ $('nav').stop().animate({left:'-250'},'slow').removeClass('sombra'); $('#b-menu').stop().animate({left:'0'},'normal'); $('#mask').fadeOut() });
Así como está funciona todo tal como lo deseo, excepto por el siguiente detalle: si hago clic en menu se activan las animaciones y si hago nuevamente clic en menu todo vuelve al estado inicial, pero si hago clic en menu y para cerrar el panel hago click en la máscara no pasa nada con un clic, sino ¡con dos! Al primer clic no pasa nada, pero al segundo se activa la animación de cierre. Luego, si quiero habrir el menu otra vez (tras haberlo cerrado con la máscara), nuevamente requiero de dos clics. Tras esto sólo requiero un clic para abrir o cerrar por medio del botón, pero si nuevamente uso la máscara para cerrar ocurre todo nuevamente.
Intuyo que el problema tiene que ver con el querer activar las animaciones con toggle desde dos "botones" diferentes, como que la animación no se cierra adecuadamente o algo por el estilo. El tema es que todo debería ocurrir "al clic" y es molesto tener que hacer dos clics para que la cosa funcione.
Mi post anterior tiene que ver con lo mismo. La idea es que al hacer clic en el botón atrás de android o en la tecla escape del teclado, se activen las animaciones de cierre. Con la tecla escape lo he conseguido pero tento el mismo drama del doble clic.
Se agradecerán todos los aportes. Espero haberme explicado bien. Seguro que es una tontera. De antemano muchas gracias.