Foros del Web » Programando para Internet » Jquery »

Jquery: Cambiar color a menu cuando esta activo

Estas en el tema de Jquery: Cambiar color a menu cuando esta activo en el foro de Jquery en Foros del Web. Hola, Estoy intentando hacer un script con jquery que me permita agregar una classe a un elemento en un menu cuando éste este activo. Este ...
  #1 (permalink)  
Antiguo 22/03/2011, 06:20
 
Fecha de Ingreso: noviembre-2002
Ubicación: Suecia
Mensajes: 253
Antigüedad: 21 años, 5 meses
Puntos: 2
Jquery: Cambiar color a menu cuando esta activo

Hola,

Estoy intentando hacer un script con jquery que me permita agregar una classe a un elemento en un menu cuando éste este activo.

Este es el html, es bastante simple:
Código HTML:
<div id="menu">
<ul>
<li><a href="pagina1.html">pagina 1</a></li>
<li><a href="pagina2.html">pagina 2</a></li>
<li><a href="pagina3.html">pagina 3</a></li>
</ul>
</div> 
Para especificar el color del elemento que esta activo utilizo esta clase:

.selected {background: #fff;}

Y mi script se ve asi:
Código PHP:
$(document).ready(function () {
$(
"#menu a").click(function() {
var 
path this.getAttributes('href');

$(
"#menu a").removeClass('selected');
$(
this).toggleClass('selected');
});
}); 
Ok, el problema con este script es que como estoy usando .click la clase no se mantiene en el elemento una vez que la pagina ha cargado, es decir, cuando hago click en el elemento se agrega la clase 'selected' y me muestra el fondo blanco pero cuando la pagina termina de cargar la clase es removida del elemento y 'este vuelve a su estado original.

Hize una prueba con javascript comun y corriente el cual funciona perfectamente pero no se como 'traducir' ese script a jquery.

script normal:
Código PHP:
function addLoadEvent(func) {
    var 
oldonload window.onload;
    if(
typeof window.onload != 'function') {
        
window.onload func;
    } else {
        
window.onload = function() {
            
oldonload();
            
func();
        }
    }
}

function 
insertAfter(newElementtargetElement) {
    var 
parent targetElement.parentNode;
    if(
parent.lastChild == targetElement) {
        
parent.appendChild(newElement);
    } else {
        
parent.insertBefore(newElementtargetElement.nextSibling);
    }
}

function 
addClass(elementvalue) {
    if(!
element.className) {
        
element.className value;
    } else {
        
newClassName element.className;
        
newClassName+= " ";
        
newClassName+= value;
        
element.className newClassName;
    }
}

function 
highlightPage() {
    if (!
document.getElementsByTagName) return false;
    if (!
document.getElementById) return false;
    if (!
document.getElementById("menu")) return false;
    var 
nav document.getElementById("menu");
    
    var 
links nav.getElementsByTagName("a");
    for (var 
i=0i<links.lengthi++) {
        var 
linkurl links[i].getAttribute("href");
        var 
currenturl window.location.href;
        
        if(
currenturl.indexOf(linkurl) != -1) {
            
links[i].className "selected";
        }
    }
}

addLoadEvent(highlightPage); 
Alguna ayuda porfavor, gracias.
  #2 (permalink)  
Antiguo 22/03/2011, 07:15
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Jquery: Cambiar color a menu cuando esta activo

Que tal Jarkaos,

lo que estas mostrando traducido a jquery seria algo asi:

Código Javascript:
Ver original
  1. function highlightPage(collection, path)
  2. {
  3.     var ppath = path || window.location.href;
  4.     collection.removeClass('selected').each(function(k, v){
  5.         if($(this).attr('href') == ppath) $(this).addClass('selected');                
  6.     });
  7. }
  8.  
  9. $(document).ready(function () {
  10.     var links = $('#menu a');
  11.     highlightPage(links);
  12. });

lo que no entiendo es para que agregas el evento click al menu, al hacer click si no frenas el evento se recarga la pagina y perdes la clase.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: color, 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 18:55.