jQuery : hinzufügen von css-Klasse für Menüpunkt, basierend auf browser-scroller-position
Ich habe ein Menü:
<ul class="menu-bottom">
<li id="m1" class="active"><a id="1" href="#"><span>Link 1</span></a></li>
<li id="m2"><a id="2" href="#"><span>Link 2</span></a></li>
<li id="m3"><a id="3" href="#"><span>Link 3</span></a></li>
</ul>
Möchte ich, dass je nach browser-scroller-position, die "aktiv" Klasse geht die richtige < li > element.
Dies ist, wie ich es sehe :
if ($(document).height() == 500) {
$('#m1').parent().addClass('active').
siblings().removeClass('active');
}
if ($(document).height() == 1000) {
$('#m2').parent().addClass('active').
siblings().removeClass('active');
}
if ($(document).height() == 1500) {
$('#m2').parent().addClass('active').
siblings().removeClass('active');
}
Ich bin nicht sehr vertraut mit jQuery Abmessungen Eigenschaften, also dieser code macht nicht viel Sinn, aber ich hoffe, Sie bekommen die Idee.
Wenn jemand mir sagen könnte, wie diese Arbeit zu machen, es wäre wirklich cool.
Dank 🙂
InformationsquelleAutor b0nd | 2010-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht ganz klar, was es ist, was Sie zu tun versuchen, aber ich werde einen Stich an Sie. Um die Höhe der Fenster ist vertikal scrollen Sie wollen, verwenden Sie die jQuery -
scrollTop()
Funktion. Dieheight()
- Funktion gibt Ihnen die Höhe in Pixel des Elements, auf dem es aufgerufen wird, so wird es nicht sehr nützlich sein, wenn die scroll-Wert ist, was Sie wollen. So etwas könnte näher an das, was Sie brauchen:Selbst wenn das obige nicht auf dem richtigen Weg, es gibt ein paar andere Dinge zu beachten, die helfen könnten. Die Linien wie
$('#m1').parent().addClass('active').siblings().removeClass('active');
sind wahrscheinlich nicht tun, was Sie erwarten. Anstatt das hinzufügen der 'active' - Klasse, der li und dann entfernen Sie es von der li 's Geschwister sind, ist es eigentlich das hinzufügen der Klasse zu der übergeordneten ul und entfernen Sie es aus dem ul' s Geschwister. Versuchen Sie.parent()
aus jeder Zeile, und das sollte funktionieren.Auch, da du mit == in if-Bedingungen, die Klasse wird nur Hinzugefügt, wenn der Wert genau 500 oder 1000 etc. was ich bezweifle ist, was Sie wollen. Das ist der Grund, warum in dem code oben habe ich es geändert werden, <= für die bedingten Anweisungen.
Hoffe, das hilft.
Kein problem. Froh, dass ich helfen konnte.
Wow!!! Danke Bryan, das mein Problem gelöst 🙂
Schöne Lösung !
Ich glaube, du ' re fehlt ); auf deine Letzte Zeile... Danke!
InformationsquelleAutor Bryan