Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS]zależne div-y rozwijalne
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam,

mam dwa divy, które po naciśnięciu się rozwijają:

  1. <script type="text/javascript">
  2. function op1(obj) {
  3. x=document.getElementById(obj);
  4. $(x).slideToggle( "slow" );
  5. }
  6. <div style="margin: 5px 5px 5px 5px; border-radius: 5px; background-color: #009999; font-size:25px; color: yellow; font-weight: bold; padding: 25px 25px 25px 25px; cursor: pointer"
  7. onclick="op1('poka12')">Przypominajka
  8. <span class="glyphicon glyphicon-chevron-right" style="float:right;"></span></input>
  9. </div>
  10. <div style="display: none" id="poka12">
  11. <div id="poka12">
  12. .......
  13. </div>
  14. </div>
  15.  
  16. <script type="text/javascript">
  17. function op2(obj) {
  18. x=document.getElementById(obj);
  19. $(x).slideToggle( "slow" );
  20. }
  21. <div style="margin: 5px 5px 5px 5px; border-radius: 5px; background-color: #009999; font-size:25px; color: yellow; font-weight: bold; padding: 25px 25px 25px 25px; cursor: pointer"
  22. onclick="op2('poka11')">Przypominajka 2
  23. <span class="glyphicon glyphicon-chevron-right" style="float:right;"></span></input>
  24. </div>
  25. <div style="display: none" id="poka11">
  26. <div id="poka11">
  27. .......
  28. </div>
  29. </div>


jak zrobić, aby nie można było rozwinąć ich jednocześnie? Czyli jeden jest rozwinięty, rozwijając drugi zwija się pierwszy? Nie mogę sobie z tym poradzić.....

Salvation
Atrybut ID powinien być jeden, unikalny na dany page. Ty masz już co najmniej dwa, które są powtórzone: poka11 i poka12
Kod JS też powinien być jeden, a nie ładowany co <div>, którego chcesz animować.
Zmień ID na CLASS, żeby elementy DOM-u były wg sztuki.
  1. <div class="fake-button" data-target="#poka12">
  2. Przypominajka
  3. <span class="glyphicon glyphicon-chevron-right" style="float: right"></span>
  4. </div>
  5. <div id="poka12" class="poka">
  6. <div class="poka__container">.......</div>
  7. </div>
  8. <div class="fake-button" data-target="#poka11">
  9. Przypominajka
  10. <span class="glyphicon glyphicon-chevron-right" style="float: right"></span>
  11. </div>
  12. <div id="poka11" class="poka">
  13. <div class="poka__container">.......</div>
  14. </div>

  1. .fake-button {
  2. margin: 5px 5px 5px 5px;
  3. border-radius: 5px;
  4. background-color: #009999;
  5. font-size: 25px;
  6. color: yellow;
  7. font-weight: bold;
  8. padding: 25px 25px 25px 25px;
  9. cursor: pointer;
  10. }
  11.  
  12. .poka {
  13. display: none;
  14. }

[JAVASCRIPT] pobierz, plaintext
  1. $(document)
  2. .find(".fake-button")
  3. .on("click", function () {
  4. const $target = $(document).find($(this).data("target"))
  5. const $pokas = $(document).find(".poka")
  6.  
  7. $pokas.slideUp("slow")
  8. $target.slideDown("slow")
  9. })
[JAVASCRIPT] pobierz, plaintext

Demo: https://jsfiddle.net/acL8x2e6/
krzesik
Tak, to jest prawie to czego potrzebowałem, ale... nie da się zamknąć wcześniej otworzonego panelu, można na to zaradzić?
Salvation
HTML i CSS zostaje jak był. Poniżej JS, który tylko musisz przekleić (i dostosować pod siebie):
[JAVASCRIPT] pobierz, plaintext
  1. $(document)
  2. .find(".fake-button")
  3. .on("click", function () {
  4. const duration = "slow"
  5. const id = $(this).data("target");
  6. const $target = $(document).find(id)
  7. const $pokas = $(document).find(".poka").not(id)
  8.  
  9. $pokas.slideUp(duration)
  10. $target.is(":visible") ? $target.slideUp(duration) : $target.slideDown(duration)
  11. })
[JAVASCRIPT] pobierz, plaintext

Demo: https://jsfiddle.net/vp7xr6e8/1/
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.