Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/11/2013, 14:05
chuekeron
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 15 años, 6 meses
Puntos: 6
Respuesta: Problema con Menú, hover y click.

Cita:
Iniciado por AlejandroGalvez Ver Mensaje
Esto es algo que puedes hacer fácilmente con CSS utilizando la propiedad transition para darle suavidad al efecto. Siempre es preferible utilizar CSS que jQuery. Una vez dicho esto, la posible solución a tu click es utilizar removeClass en primer lugar y luego el addClass:

Código Javascript:
Ver original
  1. $('#menu li').click( function() {
  2.     $('#menu li').removeClass("activo");
  3.     $(this).addClass("activo");
  4. });

Más o menos esa es la idea, aunque sin ver tu código referente al evento click y el css para encender los botones poco más puedo corregirte. Nos has mostrado el código que en principio no interesa para resolver tu problema =P.
Entiendo lo que decis, pero la verdad es que vengo manejando todos los eventos con jQuery y me gustaría seguir así.

Con respecto a los estilos, lo que hago es darle las propiedades css al elemento que le asigno la clase mediante jQquery:

Código CSS:
Ver original
  1. #menu li span {
  2.     background-color: #0DA3FD;
  3.     height: 25px;
  4.     width: 0px;
  5. }
  6.  
  7. #menu li a{
  8.     color: #0DA3FD;
  9. }
  10.  
  11. #menu .activo span {
  12.     width: 100%;
  13. }
  14.  
  15. #menu .activo a {
  16.     color: #FFFFFF;
  17. }

Y el javascript:

Código Javascript:
Ver original
  1. $('#menu li').not(".activo").hover(function() {
  2.         $('a',this).css("color","#FFF");
  3.         $('span',this).animate({width: "190px"}, 300);
  4.     }, function() {
  5.     $('a',this).css("color","#4D545E");
  6.         $('span',this).animate({width: "0px"}, 250);
  7.     });
  8.        
  9.     $('#menu li').click(function() {
  10.         $('#menu li').removeClass("activo");
  11.         $(this).addClass("activo");
  12.     });

Así no funcionan los estilos que le asigno a la clase "activo" para q el botón quede pulsado. Y si hago lo siguiente:


Código Javascript:
Ver original
  1. $('#menu li').hover(function() {
  2.         $('a',this).not(".activo a").css("color","#FFF");
  3.         $('span',this).not(".activo span").animate({width: "190px"}, 300);
  4.     }, function() {
  5.     $('a',this).not(".activo a").css("color","#4D545E");
  6.         $('span',this).not(".activo span").animate({width: "0px"}, 250);
  7.     });
  8.    
  9.     $('#menu li').click(function() {
  10.         $('#menu li').removeClass("activo");
  11.         $(this).addClass("activo");
  12.     });

...van quedando todos los botones pulsados : (