Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Slider w jQuery jak zrobic odświeżanie??

dark_ghost 18 Lut 2011 15:52 2163 8
  • #1 18 Lut 2011 15:52
    dark_ghost
    Poziom 9  

    Witam. Chciał bym zrobić auto-odświeżanie slaidera w jQuery. Strona miała by pobierać poprzez php informacje na którym miejscu jest suwak i go automatycznie aktualizować. Ale nie wyłączając przy tym możliwości przesuwania. Mam taki kod:

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    0 8
  • Pomocny post
    #2 18 Lut 2011 20:15
    marcinj12
    Poziom 40  

    To, co piszesz, trochę się wyklucza :)
    Suwak ma się automatycznie przesuwać do wartości którą odczyta ze strony, czy do wartości na którą przesunie go użytkownik?? Co jest "ważniejsze", czy po tym jak go użytkownik przesunie ma wrócić do pozycji którą odczyta ze strony?

    W każdym razie, jeżeli masz stronę test.php która zwraca pozycję suwaka (tutaj: losowo):

    Kod: php
    Zaloguj się, aby zobaczyć kod

    i chcesz aktualizować suwak jej wynikiem co jakiś czas (np. co 1s), to zrób tak:
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    (Poleam funkcję $.get() z jQuery zamiast "bawić się" ręcznie z httpRequest...
    Tak naprawdę $.get() jest odpowiednikiem wywołania $.ajax, który z kolei robi właśnie httpRequest - mniej pisania, i biblioteka xmlhttprequest.js nie potrzebna...)

    0
  • #3 19 Lut 2011 00:04
    dark_ghost
    Poziom 9  

    Dziękuje :) Zasadniczo to rozwiązało mi problem......

    ........chodź jak zwykle powstał kolejny. :)

    A mianowicie mój aktualny kod:

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    Zapisuje i pobiera naraz, czyli tak jak chciałem.
    Tylko jak zrobić żeby
    Kod: javascript
    Zaloguj się, aby zobaczyć kod

    Wywoływało się tylko po zmianie stanu na pasku. Bo w tym momencie wysyła Numer cały czas.

    plik test.php:
    Kod: php
    Zaloguj się, aby zobaczyć kod


    Czy da się zrobić żeby w momencie złapania myszką suwaka, przestawał się on odświeżać?

    0
  • #4 19 Lut 2011 11:26
    marcinj12
    Poziom 40  

    To właśnie to "wykluczenie się" o którym pisałem ;)
    Oprócz zdarzenia change() slider ma też zdarzenie start - kiedy użytkownik zaczyna przeciągać suwak, i stop - kiedy kończy.

    Cytat:
    Czy da się zrobić żeby w momencie złapania myszką suwaka, przestawał się on odświeżać?

    Da się. Startując, przypisz "timer" do zmiennej. W zdarzeniu slidera Start() - zatrzymuj go. Ew. w zdarzeniu stop() możesz go potem ponownie uruchomić. Zmodyfikuj skrypt podobnie do tego:
    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    Cytat:
    Tylko jak zrobić żeby
    Kod:
    $.get('test.php?<?php echo'u=1&';?>id=' + Numer)
    Wywoływało się tylko po zmianie stanu na pasku. Bo w tym momencie wysyła Numer cały czas.

    A tego nie rozumiem...

    0
  • #5 19 Lut 2011 13:02
    dark_ghost
    Poziom 9  

    Bardzo dziękuje, dopiero zacząłem przygodę z jQuery a z javą też nie miałem nic wspólnego.

    Ten kod po Pana sugestiach wykonuje co do niego należy. Suwak jest połączony z bazą w obie strony. Ma to być suwak do ściemniacza oświetlenia. Przez co na kilku terminalach ma być stale aktualny i z każdego musi być możliwość zmiany.

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    0
  • #6 19 Lut 2011 13:11
    marcinj12
    Poziom 40  

    Jedno "ale":
    W akcji stop() slidera wznawiasz pobieranie co 3s, ale nie przypisujesz go do zmiennej interval. Powinno być tak jak kilka linijek niżej, kiedy po raz pierwszy wywołujesz "timer", bo robiąc clearInterval(interval) nie będziesz w stanie go potem zatrzymać po raz drugi, czyli:

    Kod: javascript
    Zaloguj się, aby zobaczyć kod

    0
  • #7 19 Lut 2011 22:39
    dark_ghost
    Poziom 9  

    To ciekawe bo działa :) ale poprawie dla pewności. Teraz tylko jeszcze jak zrobić żeby działało na ie? :)

    0
  • #8 19 Lut 2011 23:10
    marcinj12
    Poziom 40  

    Faktycznie, IE cache'uje odpowiedzi z AJAXa, wrzuć zaraz na początku document.ready taki kod, powinno pomóc:

    Kod: javascript
    Zaloguj się, aby zobaczyć kod

    0
  • #9 06 Cze 2011 08:49
    dark_ghost
    Poziom 9  

    Dziękuje za pomoc. Wszystko działa jak należy, temat zamykam.

    0