Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JS] chowanie elementów
Edpl
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 6.05.2006

Ostrzeżenie: (0%)
-----


Witam,
w panelu administracyjnym systemu który obecnie pisze, korzystam z formularzy i innych elementów strony posiadających "display=none" i pokazujących się dopiero po kliknięciu w jakiś link. Chciałbym żeby przy rozwinięciu którejś opcji, ta poprzednio otwarta się chowała.
Jak to zrobić najlepiej? Możnaby chować wszystkie elementy posiadające zdefiniowane 'id' o obojętnej wartości (jak?). Tu pojawia się problem z planowanym wprowadzeniem CSS'a... wtedy chowała by mi się większość strony... jak to rozwiązać lepiej?

Zaznaczam, że w javascripcie jestem zielony.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ja to robię mniej więcej tak. Załóżmy takie menu:
  1. <dl>
  2. <dt>asd</dt>
  3. <dd>sda</dd>
  4.  
  5. <dt>asd</dt>
  6. <dd>sda</dd>
  7.  
  8. <dt>asd</dt>
  9. <dd>sda</dd>
  10. </dl>


<dd/> zawiera treść, są domyślnie ukryte.

Teraz JS:
Kod
$('dl dt').click(function(e){
  e.preventDefault();
  $(this).parent()
    .find('dd:visible').slideUp()
    .end().next().slideDown();
}

Przyznam, że ostatnio spodobały mi się konstrukcje bazujące na uchwytach zdarzeń (e), o tym poczytaj gdzieś, gdzie opisany jest DOM; IMHO to dużo bardziej eleganckie rozwiązanie niż zwykłe return false. Co dalej?

Bieżący uchwyt, to kotwica rozwijająco-chowająca, czyli wyzwalacz zdarzeń. Po kolei: wskakuje na poziom rodzica i wyszukuje w nim wszystkie widoczne warstwy treści, po czym je zwija. Następnie wraca "do siebie" (za pomocą czego, to sprawdź w dokumentacji) i szuka swojego sąsiada, którego rozwija. [;

Jak widzisz, całego potworka można zapisać w postaci wywoływania metod łańcuchowych obiektu jQuery i m.in. dlatego jest on taki za...jefajny. [;

A jak to dostosować do Twojego kodu? Zadanie domowe. [;
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 17:36