Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[jQuery] Zamykanie / otwieranie przy pomocy hide i show
#1
Witam,
chciałbym zrobić sobie, aby nad akapitem lub divem była belka z napisem. Po kliknięciu na nią div / akapit ukrywa się. Po następnym pokazuje itd.

Wiem że mogę użyć hide i show z jquery, np. tak jak tu:

Kod:
<a href="index.php#" onclick='$("p.znikanie").hide("fast")'>ZNIKNIJ</a><br>
<a href="index.php#" onclick='$("p.znikanie").show("slow")'>POKAZ</a>

<br /><br />
<p class="znikanie">
To jest testowy teskt, który może sobie zniknąć!<br>
To jest testowy teskt, który może sobie zniknąć!
</p>

ALE mam problem Smile
Jak widać, wiem jak to zrobić na 2 przyciskach... jak to zrobić tak, aby 1 przycisk "wiedział", że dany akapit / div jest w danej chwili zwinięty / rozwinięty?

Na js nie znam się kompletnie, łopatologiczne wyjaśnienie co-i-jak będzie więc bardzo na miejscu Wink
Odpowiedz
#2
Użyj toggle
Kod:
$("p").toggle(function(){
  $(this).hide("fast");
},function(){
  $(this).show("slow");
});
Odpowiedz
#3
No i teraz mam przykładowo tak:

Kod:
<script>
$(document).ready(function(){
  $("button").click(function () {
      $("p").toggle();
    });

$("p").toggle(function(){
  $(this).hide("slow");
},function(){
  $(this).show("slow");
});
});

</script>

<button>Przycisk</button>
<p>Testowy tekst teskt teskt teskt</p>

Ale co gdy chcę dać 2 takie same elementy na stronę, które będą od siebie niezależne? Kopiowanie chyba nie ma sensu...
Odpowiedz
#4
To może tak
Kod:
$("a.przycisk").toggle(function(){
  $(this).next("p").hide("slow");
},function(){
  $(this).next("p").show("slow");
});
i
Kod:
<a href="#" class="przycisk">klik</a>
<p>
cos tam
</p>
<a href="#" class="przycisk">klik</a>
<p>
cos tam
</p>
<a href="#" class="przycisk">klik</a>
<p>
cos tam
</p>

Pisze z glowy, więc mogłem gdzieś się pomyklić, ale raczej jest dobrze.
Odpowiedz
#5
Wszystko mi obecnie działa jak chciałem, ale mam jeszcze jedno pytanie.
Jak zrobić, aby dane bloki na wstępie były zamknięte?

Dodałem sobie do funkcji ready kod:

Kod:
$("div.nav").hide("fast");

ale nieco dziwnie to wygląda: gdy sie ładuje to są otwarte, a potem się zamykają Wink

PS: Jednak mam mały problem - efekt występuje po DRUGIM naciśnięciu na linka... nie powinien czasem po pierwszym?
PS2: Ten problem to wywołany chyba przez moją zmianę - najpierw zwija już zwinięte a potem dopiero rozwija Wink

EDIT:
Już sobie poradziłem, wystarczyło dodać do css display: none;
Odpowiedz
#6
No to może odwrotnie
Kod:
$("div.nav").hide("fast");
$("a.przycisk").toggle(function(){
  $(this).next("p").show("slow");
},function(){
  $(this).next("p").hide("slow");
});
Pozmieniaj sobie tylko klasy. Ten patent z css display: none; nie jest najlepszy, bo Ci co nie mają js nie zobaczą nic. Możesz to dodać w js, wtedy będzie to sensowniejsze, a efekt podobny do $("div.nav").hide("fast");
Odpowiedz
#7
No tak, rzeczywiście jak ktoś miałby wyłączone js to nie pokazałoby zupełnie nic.
A nie da się tego zrobić przy innym zdarzeniu? W wypadku ready zamykają się po załadowaniu. Próbowałem load (document oraz window), ale wtedy nie działa lub chowa tak samo jak w wypadku ready.
Odpowiedz
#8
A to co napisałem powyżej nie działa (gdy podstawisz swoje klasy)?
Analogiczne zrobiłem to w tym tutku: http://websta.pl/tutoriale/jquery-wysuwany-boczny-panel-menu
to moż tak, trochę inaczej:
Kod:
$("p").css("display", "none");
$("a.przycisk").toggle(function(){
  $(this).next("p").show("slow");
},function(){
  $(this).next("p").hide("slow");
});
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Sad HTML/CSS/JQUERY - Potrzebuje pomocy / Bezradność jokerblitzz 10 10,210 28-04-2016, 00:24
Ostatni post: mubi
  jquery? mordrag 0 2,333 29-03-2015, 17:44
Ostatni post: mordrag
  Formukarz kontaktowy [Pomocy] bahafo 3 5,927 08-01-2015, 13:31
Ostatni post: Kartofelek
  aby funkcja JQuery zadzialala po okreslonym czasie Arnimarl 2 3,819 25-05-2014, 07:38
Ostatni post: Arnimarl
  Konflikt Mootools/Jquery kurde 2 3,238 31-10-2013, 01:44
Ostatni post: kornell

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl