Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] Podmenu z wyróżnionym linkiem
Forum PHP.pl > Forum > Przedszkole
Lombi
Witajcie,

Taki trywialny problem napotkałem podczas pisania kodu:
Mam menu tak wyglądające:
Menu1
- SubMenu1
-- SubSubMenu1
- Submenu2
Menu2 itd...

Po kliknieciu na Menu1 rozwija się lista SubMenu danego działu. Po kliknięciu na SubMenu1 rozwija się kolejne podmenu - w tym przypadku pokaże się tylko SubSubMenu1. Typowe menu drzewiaste smile.gif

Do tej pory jest wszystko w porządku tylko jak kliknę w jakiś link (np. SubMenu2), to po przeładowaniu stronki chce mieć rozwinięte podmenu działu Menu1 i wyróżniony kliknięty link.

Znalazłem cos o nazwie dojoTree, ale to setki linijek kodu. Pytanie brzmi jak zrobić to w łatwiejszy sposób?
Mam nadzieję że nie zamotalem.
vokiel
W adresie przekazuj id menu (tak, że każde menu, submenu ma swój unikalny id) i przy generowaniu menu na danej stronie sprawdzaj czy dana gałąź menu jest ta, która jest w adresie, jeśli tak, dopisz jej klase css oznaczającą, że dane menu to jest te aktywne.

  1. <?php
  2. //link np: index.php?strona=3
  3. //generowanie menu wersja strasznie uproszczona
  4. foreach ($menu as $id =>$val){
  5. if ($id == intval($_GET['strona'])){echo 'class="active"';}
  6. }
  7. ?>
hiszpanespaniol
gdyby subMenu2 miało jakiś związek z SubSubMenu1, np było jego "dzieckiem", to wtedy js w połączeniu z php "przedpiszcy" smile.gif ładnie by Ci rozwijało wszystko. ale SubMenu2 nie jest dzieckiem ani rodzicem subsubMenu1, więc nadanie klasy pomoże nam tylko wyróżnić aktywną stronę. a rodzeństwa może być więcej niż dwoje.

wpadłem na taki pomysł, że:
możesz oprócz przekazywania id aktywnej podstrony zrobić w css'ie że każdy link odwiedzony jest display: block, każdy nieodwiedzony i znajdujący się wewnątrz drzewa (nie będący na samej górze) ma display: none. za pomocą js ustawiać co dzieje się z rodzicami linka który ma display: block (lub który jest visited). to chyba jest jakieś wyjście.

najlepiej jednak by było ładować treść do div'a obok meu bez przeładowania strony.

edit:
może nie display: none, ale position: absolute; left: -999em
i nie display: block, ale: position: relative; left: auto;

i nie mam mozliwości sprawdzenia jak ie sobie z tym radzi
Lombi
Jej ale mam zaćmienia. Sposób Vokiela śmiga aż miło. Dzięki za zainteresowanie.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.