Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript] toggle
Fred1485
post 23.05.2015, 16:30:48
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?


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
rad11
post 23.05.2015, 16:34:50
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 23.05.2015, 16:50:39
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


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
rad11
post 23.05.2015, 16:52:26
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 23.05.2015, 16:56:09
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


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Comandeer
post 23.05.2015, 16:57:24
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 23.05.2015, 16:58:41
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 23.05.2015, 17:18:27
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?


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Comandeer
post 23.05.2015, 17:28:22
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 23.05.2015, 17:30:13
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 23.05.2015, 17:31:16
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 23.05.2015, 17:32:25
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 23.05.2015, 17:34:16
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?



--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
session
post 23.05.2015, 17:44:03
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 23.05.2015, 17:56:25
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? biggrin.gif


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post
Comandeer
post 23.05.2015, 18:06:04
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 23.05.2015, 18:31:49
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 wink.gif Wiadomo że zna, po sąsiedku w końcu biggrin.gif Ale obecnie w mieście królów Rkingsmiley.png tongue.gif

@Comandeer daję okejkę 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 23.05.2015, 19:17:57
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.


--------------------
  1. echo 'I was trying';
  2. die ();
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.06.2025 - 20:34