2009-07-04 15 views
3

Ich habe ein Menü:JS: Die Angabe aktuelles Elements im Menü

<ul> 
    <li id="active"><a href="/">Головна</a></li> 
    <li><a href="/about/">Про компанію</a></li> 
    <li><a href="/work/">Діяльність</a></li> 
    <li><a href="/initiative/">Ініціативи</a></li> 
    <li><a href="/statti/">Статті</a></li> 
</ul> 

Können Sie eine Art und Weise id = aktive Attribute für diese Liste zu ändern. Wenn ich zum Beispiel ungefähr geklickt habe, möchte ich, dass dieses li-Element als aktiv markiert wird.

Danke

Antwort

2

Es gibt an elegant css method von Styling der currentl y aktiver Navigationsstatus ohne JavaScript oder serverseitige Unterstützung. Im Grunde genügt eine ID (z. B. als Körper-ID-Attribut), die den Navigationszustand eindeutig identifiziert, um css-Selektoren zu erzeugen, die den aktiven Zustand hervorheben.

+0

Das ist eine wirklich coole Technik! +1. – Jacob

2

Verwenden Sie Klasse, nicht ID. Der Grund ist, dass ID zum Identifizieren von Elementen dient, was in diesem Fall bedeuten würde, dass das einzige Element auf der Seite, das durch "aktiv" identifiziert wird, dieses wäre, selbst wenn andere Kontexte eine "aktive" Unterscheidung benötigen. Mit der Klasse können Sie mehrere "aktive" Elemente in verschiedenen Kontexten haben und sie ist semantisch korrekter.

1

Wenn Ihr Menü hatte eine ID, lassen Sie uns „xpto“ sagen, die Onclick jeder Verbindung eine Funktion wie diese auslösen könnte:

onclick="setActiveId(this);" 


functionSetActiveId(newActiveElem){ 
    var allElems = document.getElementById('xpto').childNodes; 

    for(var i = 0; i < allElems.length; i++){ 
    allElems[i].id = ''; 
    } 

    newActiveElem.id = 'active'; 
} 
+0

Meine Lösung scheint fast genau so zu sein, wie sie ein paar Sekunden zuvor gepostet hat. Ich stimme zu, dass die Verwendung eines Klassen-Tags semantisch korrekter wäre. – ajdramos