Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Jquery][JS] Poprawa kodu - zwijanie i odwijanie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
yozer2308
  1. <font face="Verdana" size="3">
  2. <b>09 styczeń 2012 - Szkolenie 1 test</b>
  3. </font>
  4.  
  5. <font face="Verdana" size="2">
  6. <p id="szk1">
  7. Test to działa!
  8. </p></font>
  9. <font face="Verdana" size="1">
  10. <p id="show1" align="right" style="color: red; cursor: pointer;">więcej...
  11. </p></font>
  12.  
  13. <font face="Verdana" size="3">
  14. <b>09 styczeń 2012 - Szkolenie 2 test</b>
  15. </font>
  16.  
  17. <font face="Verdana" size="2">
  18. <p id="szk2">
  19. Test to działa! Hura!
  20. </p></font>
  21. <font face="Verdana" size="1">
  22. <p id="show2" align="right" style="color: red; cursor: pointer;">więcej...
  23. </p></font>


I taki kod jquery:

  1. $(document).ready(function(){
  2.  
  3. $('#szk1').css('display','none');
  4. $('#show1').click(function(){
  5. if ($("#szk1").is(":hidden")) {
  6.  
  7. $("#szk1").slideDown("slow");
  8. $('#show1').text('schowaj...');
  9.  
  10. }
  11. else{
  12.  
  13. $("#szk1").slideUp("slow");
  14. $('#show1').text('więcej...');
  15.  
  16. }
  17. });
  18.  
  19. $('#szk2').css('display','none');
  20. $('#show2').click(function(){
  21. if ($("#szk2").is(":hidden")) {
  22. $("#szk2").slideDown("slow");
  23. $('#show2').text('schowaj...');
  24. }
  25. else{
  26. $("#szk2").slideUp("slow");
  27. $('#show2').text('więcej...');
  28. }
  29.  
  30. });
  31.  
  32. });


W przypadku dwóch rozwijających się elementów, jeszcze ujdzie chociaż i tak brzydko to wygląda.
A ja nie mam pomysłu jak to zrobić tak "elegencko" (tzn. żebym do każdego rozwijanego elementu nie musiał dodawać znowu tych kilku linijek).
kaem
Zamiast id nadaj tym elementom takie same klasy, np: class="szk" i class="show". Wrzuć każdy powtarzający się kawałek htmla do diva. I teraz jak klikniesz w element $('.szk'), szukasz elementu o klasie show znadjującego się w tym samym divie i sprawdzasz czy jest ukryty. Pomogą Ci w tym, np. takie metody JQuery: parent(), find(), children(), eq(), hth-child(). Sposobów w sumie na rozwiązanie tego problemu jest jest kilka. Przejrzyj doc jQuery bo tam jest b. ładnie wszystko opisane.
by_ikar
Lepiej użyć coś uniwersalnego:

[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. $('.hide').css('display', 'none');
  3. $('.showhide').click(function() {
  4. var href = $(this).attr('href');
  5. $(href).slideToggle(300);
  6. return false;
  7. });
  8. });
[JAVASCRIPT] pobierz, plaintext


Przykład:

  1. <!DOCTYPE html>
  2. <script src="http://code.jquery.com/jquery-latest.js"></script>
  3. $(document).ready(function(){
  4. $('.hide').css('display', 'none');
  5. $('.showhide').click(function() {
  6. var href = $(this).attr('href');
  7. $(href).slideToggle(300);
  8. return false;
  9. });
  10. });
  11. </script>
  12. </head>
  13.  
  14. <a href="#szk2" class="showhide">więcej...</a>
  15. <div id="szk2" class="hide">Test to działa! Hura!</div>
  16.  
  17. </body>
  18. </html>


Skopiuj sobie kod html, zapisz otwórz w przeglądarce kliknij na "więcej..". W href podajesz identyfikator, razem z hashem, elementu który ma zostać "odsłonięty" po kliknięciu. Elementowi który ma być ukryty nadajesz klasę hide, coby od razu go ukryć.
yozer2308
Ok, działa pięknie. Dokładnie o coś takiego mi chodziło.
Dzięki.

Tylko po co return false; na końcu?
by_ikar
Po to żeby ci tej kotwicy która jest w linku nie przypisywało do adresu.
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.