Foros del Web » Programando para Internet » Jquery »

Problema con Menú, hover y click.

Estas en el tema de Problema con Menú, hover y click. en el foro de Jquery en Foros del Web. Buenas gente, tengo un menú con un efecto hover... que aplico mediante javascript. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < ul id = "menu" > ...
  #1 (permalink)  
Antiguo 17/11/2013, 13:01
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 16 años, 1 mes
Puntos: 6
Problema con Menú, hover y click.

Buenas gente, tengo un menú con un efecto hover... que aplico mediante javascript.

Código HTML:
Ver original
  1. <ul id="menu">
  2.   <li><span></span><a href="#">Botón 1</a></li>
  3.   <li><span></span><a href="#">Botón 2</a></li>
  4.   <li><span></span><a href="#">Botón 3</a></li>
  5. </ul>


Código Javascript:
Ver original
  1. $('#menu li').hover(function() {
  2.     $('a',this).css("color","#FFF");
  3.     $('span',this).animate({width: "190px"}, 250);
  4. }, function() {
  5.     $('a',this).css("color","#4D545E");
  6.     $('span',this).animate({width: "0px"}, 250);
  7. });

Hasta aca todo bien, funciona. El tema esta en que quiero hacer que cuando se hace click en una de las opciones, dicho botón quede activo.
Intente con addClass(), not() y demás sin tener éxito. Todos los botones iban quedando pulsados a medida que hacia click en cada uno de ellos, obviamente la idea es que esto se aplique solo al ultimo click y el efecto hover siga funcionando para el resto de los botones... alguna idea?
  #2 (permalink)  
Antiguo 17/11/2013, 13:11
Avatar de AlejandroGalvez  
Fecha de Ingreso: noviembre-2013
Mensajes: 189
Antigüedad: 11 años
Puntos: 49
Respuesta: Problema con Menú, hover y click.

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.
  #3 (permalink)  
Antiguo 17/11/2013, 14:05
 
Fecha de Ingreso: octubre-2008
Ubicación: Bs. As., ARG
Mensajes: 203
Antigüedad: 16 años, 1 mes
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 : (

Etiquetas: funcion, hover, 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 01:59.