Foros del Web » Creando para Internet » CSS »

marcar una opción del menu al pinchar sobre ella

Estas en el tema de marcar una opción del menu al pinchar sobre ella en el foro de CSS en Foros del Web. hola, tengo un menu en una plantilla de wordpress y quiero que al pulsar sobre una opcion se me queden los estilos en la misma ...
  #1 (permalink)  
Antiguo 27/07/2015, 06:39
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
marcar una opción del menu al pinchar sobre ella

hola, tengo un menu en una plantilla de wordpress y quiero que al pulsar sobre una opcion se me queden los estilos en la misma (los estilos del hover) marcados en la opcion pulsada.

haber esto se hace con :active no? por que con :active no me funciona
  #2 (permalink)  
Antiguo 27/07/2015, 09:13
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: marcar una opción del menu al pinchar sobre ella

No, no se hace con :active. Eso sirve para estilizar un enlace que está activo, y eso ocurre solo cuando pulsas sobre él. Cuando dejas de pulsar, ya no está en ese estado.

Ahí tendrás que mirar qué clase añade WordPress al enlace activo y estilizar esa clase en tu CSS.
__________________
(:
  #3 (permalink)  
Antiguo 27/07/2015, 11:22
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: marcar una opción del menu al pinchar sobre ella

Deberías crear una nueva clase añadiendole los mismos estilos que tiene el hover, luego asignas esa clase al enlace clickeado usando javascript o jquery.

Código CSS:
Ver original
  1. .current{
  2.    /* estilos */
  3. }

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3.         $("a.item").click(function(){ //al clickear un enlace con clase "item"
  4.  
  5.                 $("a.item").removeClass("current"); //le quitamos la clase "current" a todos los ".item"
  6.                 $(this).addClass("current") //y le asignamos "current" al enlace clickeado
  7.  
  8.         });
  9.  
  10.  
  11. });

Saludos
  #4 (permalink)  
Antiguo 27/07/2015, 13:45
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: marcar una opción del menu al pinchar sobre ella

fede estoy teniendo problemas con jquery. te detallo a continuacion como lo estoy haciendo.

primero incluyo el jquery en el archivo functions.php:
Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. if(!is_admin())
  5. {
  6.     wp_deregister_script('jquery');
  7.     wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false, '');
  8.     wp_enqueue_script('jquery');
  9. }
  10.  
  11. ?>

pongo tu codigo jquery en el header.php
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.    
  3.  
  4.         $(document).ready(function(){
  5.      
  6.             $(".menu-item").click(function()
  7.             { //al clickear un enlace con clase "item"
  8.      
  9.                     $(".menu-item").removeClass("current"); //le quitamos la clase "current" a todos los ".item"
  10.                     $(this).addClass("current") //y le asignamos "current" al enlace clickeado
  11.      
  12.             });
  13.      
  14.      
  15.     });
  16. </script>
en el css creo una clase current con el codigo del hover...

con el inspector de elementos me dice que mi menu tiene en los li estos estilos:
Código CSS:
Ver original
  1. <li id="menu-item-21" class="menu-item menu-item-type-taxonomy menu-item-object-category current-menu-item menu-item-21"><a href="http://localhost/jamonwordpress/category/blog/">Blog</a></li>

por eso el codigo jquery pongo .menu-item sin el "li"

que estoy haciendo mal?
  #5 (permalink)  
Antiguo 27/07/2015, 13:52
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: marcar una opción del menu al pinchar sobre ella

¿Qué te dice la consola JavaScript? Prueba usando jQuery en lugar de $. Metiéndole mano a un WordPress me pasó alguna vez. No sé cómo funciona WordPress, supongo que lo harán por evitar conflictos con otras librerías.
__________________
(:
  #6 (permalink)  
Antiguo 27/07/2015, 14:04
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: marcar una opción del menu al pinchar sobre ella

esto es uno de los errores que me lanza el firebug

function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,fun
  #7 (permalink)  
Antiguo 28/07/2015, 02:52
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: marcar una opción del menu al pinchar sobre ella

Sí, puede haber conflicto con otras librerías que use WP ya que a todo el mundo le gusta el "$"... ¿eh? Para evitarlo puedes usar noConflict o definir la variable en un scope aparte.
  #8 (permalink)  
Antiguo 28/07/2015, 13:44
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: marcar una opción del menu al pinchar sobre ella

he probado si me funciona el jquery en mi plantilla y con un script basico de hola mundo me muestra, que el jquery funciona, pero aun no consigo darle los estilos css a la opcion pusada del menu

el script lo tengo asi:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.    
  3.     $(document).ready(function(){
  4.      
  5.             $("li.current-menu-item").click(function()
  6.             { //al clickear un enlace con clase "item"
  7.      
  8.                     $("li.current-menu-item").removeClass("current"); //le quitamos la clase "current" a todos los ".item"
  9.                     $(this).addClass("current") //y le asignamos "current" al enlace clickeado
  10.      
  11.             });
  12.      
  13.      
  14.     });
  15. </script>

como veis uso el class current-menu-item. no será el valido no? al no funcionarme

con el inspector del chrome me dice el id y los class que tienen las opciones del menu
Código HTML:
Ver original
  1. <li id="menu-item-21" class="menu-item menu-item-type-taxonomy menu-item-object-category current-menu-item menu-item-21"><a href="http://localhost/jamonwordpress/category/blog/">Blog</a></li>

¿que me aconsejais??
  #9 (permalink)  
Antiguo 28/07/2015, 16:13
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: marcar una opción del menu al pinchar sobre ella

Pues lo único veo mal es esto:

Código Javascript:
Ver original
  1. $("li.current-menu-item")

Ahí solo funciona si al que se hace click es el current.
__________________
(:
  #10 (permalink)  
Antiguo 30/07/2015, 03:16
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: marcar una opción del menu al pinchar sobre ella

lo he modificado, ahora lo tengo asi pero sige sin funcionar:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.    
  3.     $(document).ready(function(){
  4.      
  5.             $(".menu-item").click(function()
  6.             { //al clickear un enlace con clase "item"
  7.      
  8.                     $(".menu-item").removeClass("current"); //le quitamos la clase "current" a todos los ".item"
  9.                     $(this).addClass("current") //y le asignamos "current" al enlace clickeado
  10.      
  11.             });
  12.      
  13.      
  14.     });
  15. </script>
  #11 (permalink)  
Antiguo 30/07/2015, 05:52
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: marcar una opción del menu al pinchar sobre ella

he probado el script en un .php a parte con un menu usando "li" y funciona el script, algo me falla en $(".item").click(function().

el menu en wordpress tiene algo que me hace que no funcione el script.
que tengo que poner en : $(".item")
  #12 (permalink)  
Antiguo 30/07/2015, 06:32
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: marcar una opción del menu al pinchar sobre ella

Igual hay algo con !important.
  #13 (permalink)  
Antiguo 30/07/2015, 07:36
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: marcar una opción del menu al pinchar sobre ella

Definitivamente hay algo interfiriendo, probé tu código exactamente como lo pasaste y funciona perfecto..

http://codepen.io/fede5426/pen/rVQbBB

La verdad no tengo idea de qué puede estar fallando..

Me gustaría ver el CSS del nav + la clase current si es posible, para ver si así puedo ayudar en algo..

Edito:

Probaste de agregar la libreria jquery al header.php directamente con una etiqueta script en lugar de traerlo con php?

Código HTML:
Ver original
  1. <script src="http://code.jquery.com/jquery-latest.min.js"></script>
  #14 (permalink)  
Antiguo 09/08/2015, 08:36
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: marcar una opción del menu al pinchar sobre ella

Código HTML:
Ver original
  1. <nav class="nav"><ul id="menu-menu-1" class="nav_list"><li id="menu-item-35" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-35"><a href="http://www.jamondemono.com/word/category/blog/">blog</a></li>
  2. <li id="menu-item-22" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22"><a href="http://www.jamondemono.com/word/biografia/">Biografía</a></li>
  3. <li id="menu-item-24" class="menu-item menu-item-type-post_type menu-item-object-page current-page-ancestor menu-item-24"><a href="http://www.jamondemono.com/word/discografia/">Discografia</a></li>
  4. <li id="menu-item-25" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-25"><a href="http://www.jamondemono.com/word/videos/">Videos</a></li>
  5. <li id="menu-item-31" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-31"><a href="http://www.jamondemono.com/word/contacto/">Contacto</a></li>
  6. </ul></nav>

clase .current
Código CSS:
Ver original
  1. .current
  2.     {
  3.         color:#ffffff;
  4.         background-color:#ff0000;
  5.         line-height:2;
  6.         padding: 6px;
  7.     }

fede aqui te dejo el codigo!!! que será lo que me esta interfiriendo....
  #15 (permalink)  
Antiguo 31/08/2015, 11:10
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 meses
Puntos: 208
Respuesta: marcar una opción del menu al pinchar sobre ella

Estás enlazando con URLs absolutas.. no estás cargando el contenido dinámicamente. Eso recarga la página y por eso no queda activo el menú.

Deberías cargar el contenido con PHP o Ajax, la verdad ahi ya no te puedo seguir ayudando.. tengo idea pero poca, no soy el indicado para ese trabajo.

Saludos

Etiquetas: marcar
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 20:43.