Foros del Web » Programando para Internet » Jquery »

Crear boton activo con jQuery

Estas en el tema de Crear boton activo con jQuery en el foro de Jquery en Foros del Web. Bueno tengo este codigo html: Código HTML: <div id= "main-menu" > <ul> <li> <div class= "icon iconhome" > </div> <a href= "?page_id=12" class= "" > ...
  #1 (permalink)  
Antiguo 19/10/2012, 14:07
seravifer
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Crear boton activo con jQuery

Bueno tengo este codigo html:
Código HTML:
<div id="main-menu"><ul>
<li><div class="icon iconhome"></div><a href="?page_id=12" class="">Autobiografía</a></li>
<li><div class="icon iconresume"></div><a href="?page_id=12">Autobiografía</a></li>
<li><div class="icon"></div><a href="?page_id=15">Proyectos</a></li>
<li><div class="icon icontact"></div><a href="?page_id=18">Contacto</a></li>
</ul></div> 
Y necesito que, por ejemplo cuando estés en la pagina de contacto se active una clase y cuando cambies de pagina se active su respectiva clase y se elmine la de contacte.
La clase que se activa es la misma para todas.
  #2 (permalink)  
Antiguo 20/10/2012, 07:01
seravifer
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear boton activo con jQuery

Nadie sabe como¿?
  #3 (permalink)  
Antiguo 20/10/2012, 10:31
Avatar de Jodorem  
Fecha de Ingreso: abril-2012
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Crear boton activo con jQuery

Hola seravifer,

Tienes 2 opciones:

Usar condicional para cada enlace.

Ejemplo con PHP:

Código PHP:
Ver original
  1. <?
  2. $page_id = $_GET['page_id'];
  3. ?>
  4.  
  5. <div id="main-menu"><ul>
  6. <li><div class="icon iconhome"></div><a href="?page_id=12" <? if($page_id == '12'){echo 'class="LaClase"'} ?>>Autobiografía</a></li>
  7. <li><div class="icon iconresume"></div><a href="?page_id=12" <? if($page_id == '12'){echo 'class="LaClase"'} ?>>Autobiografía</a></li>
  8. <li><div class="icon"></div><a href="?page_id=15" <? if($page_id == '15'){echo 'class="LaClase"'} ?>>Proyectos</a></li>
  9. <li><div class="icon icontact"></div><a href="?page_id=18" <? if($page_id == '18'){echo 'class="LaClase"'} ?>>Contacto</a></li>
  10. </ul></div>

Si se cumple la condición imprimirá la clase que quieras colocar respectivamente.

Segunda opción:

Como en el titulo del post haces mención de JQuery, supongo que estas usando AJAX de JQuery. Si es el caso, entonces en el evento que haces referencia al click del enlace, añade esto:

Código Javascript:
Ver original
  1. $('.LaClase').removeClass();
  2. $(this).addClass("LaClase");

Si estas usando AJAX deberias sustituir el tag <a> por quizá un <label> para que no te cargue la página.

Estoy lanzando suposiciones ya que no ofreces más detalles.

Última edición por Jodorem; 20/10/2012 a las 10:38
  #4 (permalink)  
Antiguo 20/10/2012, 10:43
seravifer
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear boton activo con jQuery

Gracias por esponder Jodorem,
la verdad es que he estado mirando por internet y no he encontrado nada, lo único es algo que utilizaban jQuery. Probare a usar lo que tu dices pero no quiero usar mucho php así que utilizare la segunda opción que no funciona por que al clicar en un enlace se recarga la pagina y pierde esa función jQuery.

De momento tengo esto en Javascript y me gustaría que lo tradujeran a jQuery:

Código Javascript:
Ver original
  1. function addLoadEvent(func) {
  2.     var oldonload = window.onload;
  3.     if(typeof window.onload != 'function') {
  4.         window.onload = func;
  5.     } else {
  6.         window.onload = function() {
  7.             oldonload();
  8.             func();
  9.         }
  10.     }
  11. }
  12.  
  13. function insertAfter(newElement, targetElement) {
  14.     var parent = targetElement.parentNode;
  15.     if(parent.lastChild == targetElement) {
  16.         parent.appendChild(newElement);
  17.     } else {
  18.         parent.insertBefore(newElement, targetElement.nextSibling);
  19.     }
  20. }
  21.  
  22. function addClass(element, value) {
  23.     if(!element.className) {
  24.         element.className = value;
  25.     } else {
  26.         newClassName = element.className;
  27.         newClassName+= " ";
  28.         newClassName+= value;
  29.         element.className = newClassName;
  30.     }
  31. }
  32.  
  33. function highlightPage() {
  34.     if (!document.getElementsByTagName) return false;
  35.     if (!document.getElementById) return false;
  36.     if (!document.getElementById("main-menu")) return false;
  37.     var nav = document.getElementById("main-menu");
  38.      
  39.     var links = nav.getElementsByTagName("a");
  40.     for (var i=0; i<links.length; i++) {
  41.         var linkurl = links[i].getAttribute("href");
  42.         var currenturl = window.location.href;
  43.          
  44.         if(currenturl.indexOf(linkurl) != -1) {
  45.             links[i].className = "active";
  46.         }
  47.     }
  48. }
  49.  
  50. addLoadEvent(highlightPage);
  #5 (permalink)  
Antiguo 20/10/2012, 11:52
Avatar de Jodorem  
Fecha de Ingreso: abril-2012
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Crear boton activo con jQuery

seravifer,

Como te habia comentado, deberias de sustituir el tag <a> por quizá un <label> para que no te recargue la página y no se pierda la función JQuery.

Una vez hecho esto, te tocaria programar algo de AJAX para que solo cargue las partes de tu sitio web que quieras que se carguen al hacer click en el "enlace" (lo digo entre comillas porque se supone que ahora lo vas a sustituir por un <label>, y al hacer click realiza la carga por AJAX).

Echate un vistazo a la documentación de AJAX de JQuery, es muy fácil de usar:

http://api.jquery.com/jQuery.ajax/

Personalmente, es mi solución cuando quiero utilizar AJAX.
  #6 (permalink)  
Antiguo 20/10/2012, 13:28
seravifer
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear boton activo con jQuery

Ok, voy a mirarlo. Pero si no quiero usar Ajax ni Jquery¿?
  #7 (permalink)  
Antiguo 20/10/2012, 14:36
Avatar de Jodorem  
Fecha de Ingreso: abril-2012
Mensajes: 18
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Crear boton activo con jQuery

Si no quieres usar AJAX ni JQuery, deberás acudir a la primera opción que te di.
  #8 (permalink)  
Antiguo 20/10/2012, 17:06
seravifer
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear boton activo con jQuery

Ok gracias por todo, pero el menu ya no es con page id ahora es:
Código HTML:
Ver original
  1. <div id="main-menu"><ul>
  2.             <li><div class="icon iconhome"></div><a href="inicio">Inicio</a></li>
  3.             <li><div class="icon iconresume"></div><a href="perfil">Perfil</a></li>
  4.             <li><div class="icon"></div><a href="proyectos">Proyectos</a></li>
  5.             <li><div class="icon icontact"></div><a href="contacto">Contacto</a></li>
  6.             <li><div class="icon iconblog"></div><a href="blog">Blog</a></li>
  7.         </ul></div>
  #9 (permalink)  
Antiguo 23/10/2012, 10:33
seravifer
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Crear boton activo con jQuery

Cita:
Iniciado por Jodorem Ver Mensaje
Si no quieres usar AJAX ni JQuery, deberás acudir a la primera opción que te di.
Ok gracias por todo, pero el menu ya no es con page id ahora es:
Código HTML:

Código HTML:
<div id="main-menu"><ul>
            <li><div class="icon iconhome"></div><a href="inicio">Inicio</a></li>
            <li><div class="icon iconresume"></div><a href="perfil">Perfil</a></li>
            <li><div class="icon"></div><a href="proyectos">Proyectos</a></li>
            <li><div class="icon icontact"></div><a href="contacto">Contacto</a></li>
            <li><div class="icon iconblog"></div><a href="blog">Blog</a></li>
        </ul></div> 

Etiquetas: activo, html, botones
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 16:04.