Foros del Web » Programando para Internet » Jquery »

Activar solo un elemento de un menu

Estas en el tema de Activar solo un elemento de un menu en el foro de Jquery en Foros del Web. Mi problema es el siguiente: Tengo una pagina sencilla que tiene un menu que muestra varias secciones de la pagina, la pagina es de solo ...
  #1 (permalink)  
Antiguo 24/07/2014, 12:15
 
Fecha de Ingreso: julio-2014
Ubicación: México
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Pregunta Activar solo un elemento de un menu

Mi problema es el siguiente:

Tengo una pagina sencilla que tiene un menu que muestra varias secciones de la pagina, la pagina es de solo una pagina, es decir que todo el código para las diferentes secciones esta solamente en el index, todo funciona perfectamente, lo unico que me falta es que al hacer clic en un elemento del menu este se quede activado y los demas se desactiven:

ejemplo:
La fuente de menu esta en color negro, al hacer clic en contacto por ejemplo, contacto se debe volver de color blanco, al hacer clic en home, home se debe volver blanco y contacto debe volver a su estado inicial, es decir de color negro.

Alguien me prodria ayudar, estoy muy atorado en esta parte y no logro solucionarlo, muchas gracias.

Ejemplo del código:
Código HTML:
Ver original
  1. <nav>
  2.                     <ul class="container">
  3.                         <li class="menu">
  4.                             <ul>
  5.                                 <li class="button"><a href="#">Menu<br>uno<p class="mas" id="masQuienes">+</p></a></li>
  6.                                 <li class="dropdown">
  7.                                     <ul id="nav">
  8.                                         <li class="boton current"><a href="#seccion1">submenu1</a></li>
  9.                                         <li class="boton"><a href="#seccion2">submenu2</a></li>
  10.                                     </ul>
  11.                                 </li>
  12.                             </ul>
  13.                         </li>
  14.  
  15.                         <li>
  16.                             <ul>
  17.                                 <li><a href="#seccion3">menu2<p class="mas">+</p></a></li>
  18.                                 <li class="dropdown">
  19.                                     <ul id="servicosDropdown">
  20.                                         <li class="boton"><a href="#seccion4">submenu3</a></li>
  21.                                         <li class="boton"><a href="#seccion5">submenu4</a></li>
  22.                                         <li class="boton"><a href="#seccion6">submenu5</a></li>
  23.                                         <li class="boton"><a href="#seccion7">submenu6</a></li>
  24.                                         <li class="boton"><a href="#seccion8">submenu7</a></li>
  25.                                     </ul>
  26.                                 </li>
  27.                             </ul>
  28.                         </li>
  29.  
  30.                         <li class="menu" id="contactoLi">
  31.                             <ul>
  32.                                 <li class="button"><a href="#seccion9">Menu3<p class="mas">+</p></a></li>
  33.                             </ul>
  34.                         </li>
  35.                     </ul>
  36.                 </nav>
Código CSS:
Ver original
  1. ul.container{
  2.     float: left;
  3.     width:255px;
  4. }
  5. ul li{
  6.     margin-right: 10px;
  7.     padding-top: 5px;
  8.     line-height: 19px;
  9.     list-style:none;
  10.     text-align:right;
  11.     color: white;
  12.     letter-spacing: 4px;
  13.     font-weight: lighter;
  14. }
  15. li.button a{
  16.     display:block;
  17.     padding-right: 64px;
  18.     font-size:30px;
  19.     height:40px;
  20.     overflow:hidden;
  21.     position:relative;
  22.     color:white;
  23.     padding-top: 5px
  24. }
  25. li.button a{
  26.     margin-top: 10px;
  27.     text-decoration:none;
  28. }
  29. .dropdown{
  30.     margin-left: -212px;
  31.     color:#9E1A96;
  32.     display:none;
  33.     width:350px;
  34. }
  35. .dropdown li a{
  36.     font-size: 20px;
  37.     text-decoration: none;
  38.     color:#9E1A96;
  39.     letter-spacing: -1px;
  40. }
  41. .dropdown li a:hover{
  42.     color:white;
  43. }
  44. .mas {
  45.     background-color: #9E1A96;
  46.     width: 20px;
  47.     float: right;
  48.     margin-right: -38px;
  49.     margin-top: -30px;
  50.     display: block;
  51.     padding: 8px 5px 8px 8px;
  52. }
  53. #contactoMas {
  54.     background-color: #9E1A96;
  55.     width: 25px;
  56.     float: right;
  57.     margin-right: -35px;
  58.     margin-top: -8px;
  59.     display: block;
  60.     padding-right: 9px;
  61.     padding-bottom: 3px;
  62.     padding:7px 7px 7px 0px;
  63. }
  64. #masQuienes {
  65.     margin-top: -29px;
  66. }
  67. #contactoLi {
  68.     padding-top: 0px;
  69.     height: 50px;
  70.     margin-top: -10px;
  71. }
  72. ul li a p {
  73.     color: #361249;
  74. }
  75. ul li:hover a p{
  76.     background-color: white;
  77. }
  78. li ul li:hover p {
  79.     background-color: white;    
  80. }

El jquery que utilice para animar este menu es el [URL="https://code.google.com/p/k-blogger/downloads/detail?name=JQuery.easing.1.3.js&can=2&q="]easing.1.3.js[/URL]
y su script es el siguiente:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     /* This code is executed after the DOM has been completely loaded */
  3.  
  4.     /* Changing thedefault easing effect - will affect the slideUp/slideDown methods: */
  5.     $.easing.def = "easeOutBounce";
  6.  
  7.     /* Binding a click event handler to the links: */
  8.     $('li.button a').click(function(e){
  9.    
  10.         /* Finding the drop down list that corresponds to the current section: */
  11.         var dropDown = $(this).parent().next();
  12.        
  13.         /* Closing all other drop down sections, except the current one */
  14.         $('.dropdown').not(dropDown).slideUp('slow');
  15.         dropDown.slideToggle('slow');
  16.        
  17.         /* Preventing the default event (which would be to navigate the browser to the link's address) */
  18.         e.preventDefault();
  19.     })
  20.    
  21. });

Y como les decia todo esto me funciona correctamente solo tengo que hacer que un elemento se quede seleccionado al hacer clic, y al seleccionar otro este quede activado y se desactive el anterior ya que que una sistema de una sola pagina.

Última edición por spocnic; 24/07/2014 a las 12:49 Razón: añadir información
  #2 (permalink)  
Antiguo 24/07/2014, 18:25
Avatar de newboy_master  
Fecha de Ingreso: enero-2008
Ubicación: Granada
Mensajes: 882
Antigüedad: 16 años, 11 meses
Puntos: 46
Respuesta: Activar solo un elemento de un menu

Se supone que el sistema hace lo que necesitas, se activa un menú y se desactiva otro, lo que necesitas es añadir unos estilos al que está activo y quitarlos al resto. Reemplaza estas líneas:

Código Javascript:
Ver original
  1. $('.dropdown').not(dropDown).slideUp('slow').removeClass('seleccionado');
  2.  dropDown.slideToggle('slow').addClass('seleccionado');

Con eso y declarando esa clase (seleccionado) de CSS debería funcionar lo que quieres.

Salu2.
__________________
@jslirola - Programador Web Freelance.
  #3 (permalink)  
Antiguo 24/07/2014, 23:00
 
Fecha de Ingreso: julio-2014
Ubicación: México
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Activar solo un elemento de un menu

Cita:
Iniciado por newboy_master Ver Mensaje
Se supone que el sistema hace lo que necesitas, se activa un menú y se desactiva otro, lo que necesitas es añadir unos estilos al que está activo y quitarlos al resto. Reemplaza estas líneas:

Código Javascript:
Ver original
  1. $('.dropdown').not(dropDown).slideUp('slow').removeClass('seleccionado');
  2.  dropDown.slideToggle('slow').addClass('seleccionado');

Con eso y declarando esa clase (seleccionado) de CSS debería funcionar lo que quieres.

Salu2.
Lo intente tal cual me comentas pero sigo sin poder obtener el efecto deseado...
  #4 (permalink)  
Antiguo 25/07/2014, 13:13
Avatar de newboy_master  
Fecha de Ingreso: enero-2008
Ubicación: Granada
Mensajes: 882
Antigüedad: 16 años, 11 meses
Puntos: 46
Respuesta: Activar solo un elemento de un menu

Último intento, prueba esto: http://jsfiddle.net/8bmg7/

En el ejemplo la última línea de CSS pone amarillas las letras, si es lo que quieres solo tienes que cambiar el color.

Salu2.
__________________
@jslirola - Programador Web Freelance.
  #5 (permalink)  
Antiguo 25/07/2014, 15:42
 
Fecha de Ingreso: marzo-2011
Ubicación: Oaxaca
Mensajes: 252
Antigüedad: 13 años, 9 meses
Puntos: 17
Respuesta: Activar solo un elemento de un menu

Aqui hay otro ejemplo, espero que te sirva amigo
http://codepen.io/anon/pen/bIGJL


con los colores no me llevo mucho, pero se que le puedes dar un mejor estilo
  #6 (permalink)  
Antiguo 25/07/2014, 18:52
 
Fecha de Ingreso: julio-2014
Ubicación: México
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Activar solo un elemento de un menu

oh... ya... creo que no se entendió lo que quiero hacer... lo que pretendo es... que cuando de click en un elemento del submenu se que de un color por ejemplo rojo... hasta que de clic en otro elemento del submenu... entonces este nuevo elemento al que le doy clic se vuelva rojo y el anterior vuelva a su color original..., no se si me explico de forma adecuada...
  #7 (permalink)  
Antiguo 26/07/2014, 03:19
 
Fecha de Ingreso: marzo-2011
Ubicación: Oaxaca
Mensajes: 252
Antigüedad: 13 años, 9 meses
Puntos: 17
Respuesta: Activar solo un elemento de un menu

por lo rapido que escribi, se me paso que tu menu era vertical, ademas cometi unos errores, ¿algo asi es lo que quieres?

http://codepen.io/elestudiantefantasma/pen/tLfFc

La porpiedad que hace lo que quieres es FOCUS, lo puedes poner en la hoja de estilo, Mira mel ejemplo y el comentario que puse
  #8 (permalink)  
Antiguo 30/07/2014, 16:06
 
Fecha de Ingreso: julio-2014
Ubicación: México
Mensajes: 13
Antigüedad: 10 años, 4 meses
Puntos: 0
Respuesta: Activar solo un elemento de un menu

No se puede con la propiedad focus... ya lo intente de mil formas y no se puede... alguien que pueda darme alguna otra idea...
  #9 (permalink)  
Antiguo 01/08/2014, 15:55
 
Fecha de Ingreso: marzo-2011
Ubicación: Oaxaca
Mensajes: 252
Antigüedad: 13 años, 9 meses
Puntos: 17
Respuesta: Activar solo un elemento de un menu

ok revisa este ejemplo, le cambie la propiedad de focus y le aplique la funcion directamente al ul li seleccionado con jquery

http://codepen.io/elestudiantefantasma/pen/tLfFc

espero tu respuesta

Etiquetas: 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 02:31.