Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] toggle
Fred1485
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Czytając różne poradniki napotkałem fajna funkcje toggle ale niestety jest ona zdeprecjonowana i tutaj pytanie czy jest cos podobnego w jezyku jquery zeby po kliknięciu zmienila sie np wartosx diva a po nastepnym z powrotem do pierwotnej i tak w kolo?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
rad11
post
Post #2





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Nie ma jedyne dwie opcje to toggle i toggleClass ale w czym masz problem aby do Twojego problemu uzyc zyklego toggle?
Go to the top of the page
+Quote Post
Fred1485
post
Post #3





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Gdzyz zostala zdeprecjonowana i nie działa poprawnie z najnowszą wersją jquery chyba ze ja coś źle robie??

Ten post edytował Fred1485 23.05.2015, 16:51:08
Go to the top of the page
+Quote Post
rad11
post
Post #4





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Pokaz co robisz i jak
Go to the top of the page
+Quote Post
Fred1485
post
Post #5





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Chce zrobić skrypcik ze jak klikne na jeden div to drugi div się pojawi a jak znowu klikne to zniknie. Zaraz wrzucę kod jak będę w domu

Ten post edytował Fred1485 23.05.2015, 16:56:55
Go to the top of the page
+Quote Post
Comandeer
post
Post #6





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


No toć $.fn.toggle:
Kod
$('.jeden').on('click', function()
{
    $('.dwa').toggle();
});
Go to the top of the page
+Quote Post
rad11
post
Post #7





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


https://jsfiddle.net/eootgtmf/
Go to the top of the page
+Quote Post
Fred1485
post
Post #8





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


No dobrze a chcąc dodać np fadeIn i fadeOut do tego czarnego kwadracika?
Go to the top of the page
+Quote Post
Comandeer
post
Post #9





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


http://api.jquery.com/fadeToggle/
Go to the top of the page
+Quote Post
session
post
Post #10





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


Początkowo pisałeś
Cytat
zeby po kliknięciu zmienila sie np wartosx diva a po nastepnym z powrotem do pierwotnej
w takiej sytuacji:
  1. var change='Y';
  2. $("p").click(function(){
  3. var current=$(this).html();
  4. $(this).html(change);
  5. change=current;
  6. });


Możesz również stworzyć własną funkcję jQuery:
  1. jQuery.fn.extend({
  2. toggleHTML: function (s) {
  3. if(typeof change === 'undefined'){
  4. window.change=s;
  5. }
  6. var current=$(this).html();
  7. $(this).html(change);
  8. change=current;
  9. return true;
  10. }
  11. });

Później stosujesz ją sobie jak normalne toggle. Przykład.

Oczywiście nic nie stoi na przezkodzie, żeby zmienne przechowywały nie tyle zawartość jakiegoś elementu, a wartość jakiegoś atrybutu. Zamiast .html() możesz użyć dowolnej innej funkcji, której potrzebujesz.

I wracając funkcja toggle w postaci
Kod
.toggle( handler, handler [, handler ] )
została zdeprecojnowana, natomiast wspomniana funkcja toggle
Kod
.toggle( [duration ] [, complete ] )
jest obecnie jak najbardziej ok, z tym, że odpowiada jedynie za pokazanie/ukrycie elementu. W pozostałych kwestiach odpowiedź już znasz.

Ten post edytował session 23.05.2015, 17:37:12
Go to the top of the page
+Quote Post
martex
post
Post #11





Grupa: Zarejestrowani
Postów: 133
Pomógł: 4
Dołączył: 7.11.2012
Skąd: Połaniec

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


.fadeToggle();
Go to the top of the page
+Quote Post
Comandeer
post
Post #12





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


@session a po co Ci to window.change? Lepiej wykorzystać lokalny scope
Go to the top of the page
+Quote Post
Fred1485
post
Post #13





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Bo właśnie zastanawiam się czemu nie działało, analizując ten przykład:

  1. <div class="content">
  2. <div class="main">
  3. <h1>Jednostronicowa lista FAQ</h1>
  4. <h2>Słyszałem, że JavaScript to fontanna młodości. Czy to prawda?</h2>
  5. <div class="answer">
  6. <p>Tak, naprawdę! Badania wykazały, ża nauka języka JavaScript ożywia umysł i wydłuża oczekiwany czas życia o kilkaset lat. (Uwaga: część naukowców nie zgadza się z tymi twierdzeniami).</p>
  7. </div>
  8. <h2>Czy język JavaScript rzeczywiście rozwiąże wszystkie moje problemy?</h2>
  9. <div class="answer">
  10. <p>Tak! Jest to najbardziej wszechstronny język programowania na świecie oraz ma funkcje doradztwa finansowego, reanimacji i opiekowania się zwierzętami domowymi.</p>
  11. </div>
  12. <h2>Czy jest coś, czego JavaScript <em>nie</em> potrafi?</h2>
  13. <div class="answer">
  14. <p>Nie! Potrafi nawet pisać stronnicze strony FAQ na swój temat. To naprawdę inteligentny język programowania!</p>
  15. </div>
  16. </div>
  17. </div>


i JS

  1. $(document).ready(function() {
  2. $('.answer').hide();
  3. $('.main h2').toggle(
  4. function() {
  5. $(this).next('.answer').slideDown();
  6. },
  7. function() {
  8. $(this).next('.answer').fadeOut();
  9. }
  10. ); // koniec funkcji toggle
  11. }); // koniec funkcji ready


Tutaj to działa pięknie ale na starszej wersji jquery na nowszej nie będzie poprawnie działać.
To dlatego że nowsze jQuery nie wspiera tego?

Go to the top of the page
+Quote Post
session
post
Post #14





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


Tak jak pisałem najnowsze jQuery nie wspiera tego w tej postaci w jakiej jest to użyte w tym przykładzie.

@Comandeer próbowałem w local scope, ale nie chciało przechowywać między kolejnymi wywołaniami funkcji niestety, przyznam, że nie siedziałem nad tym dłużej

Ten post edytował session 23.05.2015, 17:45:25
Go to the top of the page
+Quote Post
Fred1485
post
Post #15





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Tak robiąc offtopic kolega widzę z Tarnowa okolice Ciężkowic zna? (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Comandeer
post
Post #16





Grupa: Zarejestrowani
Postów: 1 268
Pomógł: 254
Dołączył: 11.06.2009
Skąd: Świętochłowice

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


@session tak po jQuerowemu:
Kod
jQuery.fn.extend({
    toggleHTML: function(s)
    {
        var $this = $(this);

        if(typeof $this.data('change') === 'undefined')
            this.data('change', s);

        var change = $this.data('change')
        ,current=$this.html();

        $this.html(change);

        $this.data('change', current);

        return this;
    }
});
Go to the top of the page
+Quote Post
session
post
Post #17





Grupa: Zarejestrowani
Postów: 112
Pomógł: 22
Dołączył: 11.04.2010
Skąd: Tarnów

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


@Fred1485 kontynuując offtop (IMG:style_emoticons/default/wink.gif) Wiadomo że zna, po sąsiedku w końcu (IMG:style_emoticons/default/biggrin.gif) Ale obecnie w mieście królów (IMG:style_emoticons/default/Rkingsmiley.png) (IMG:style_emoticons/default/tongue.gif)

@Comandeer daję okejkę (IMG:style_emoticons/default/specool.gif)

A żeby na offtopie nie skończyć można do tej funkcji dorzucić console.log(), aby w konsoli widzieć co się w funkcji dzieje.

Ten post edytował session 23.05.2015, 18:32:23
Go to the top of the page
+Quote Post
Fred1485
post
Post #18





Grupa: Zarejestrowani
Postów: 361
Pomógł: 22
Dołączył: 10.02.2015

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


Dzięki koledzy juz wiem co i jak.
Go to the top of the page
+Quote Post

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: 15.09.2025 - 21:40