Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zakładkami jquery
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Szymon80
Witam.

Mam mały problem z zakładkami z tej strony

http://jqueryfordesigners.com/jquery-tabs/

Bardzo fanjny i prosty skrypt jquery, ale ma małą wadę. Po przełądowaniu strony nie zapamiętywało na której zakładce była ustawiona strona.

Ale znalazłem w komentarzach wersję która taką funkcję posiada:

Kod
  $(function () {
          var tabContainers = [];
          $('ul.tabs a').each(function () {
            // note that this only compares the pathname, not the entire url
            // which actually may be required for a more terse solution.
              if (this.pathname == window.location.pathname) {
                  tabs.push(this);
                  tabContainers.push($(this.hash).get(0));
              }
          });
          // sniff for hash in url, and create filter search
          var selected = window.location.hash ? '[hash=' + window.location.hash + ']' : ':first';
          tabs.click(function () {
              // hide all tabs
          tabContainers.hide().filter(this.hash).show();
              // set up the selected class
              $(tabs).removeClass('selected');
              $(this).addClass('selected');
              return false;
          }).filter(selected).click();
      });


Nie wiem dlaczego, ale teraz zakładki nie chcą się chować jedna pod drugą.
Poniżej podaje linki do skryptu orginalnego (tabs1) i z modyfikacją (tabs2)

Tabs1
http://dobry-katalog.cba.pl/x/tabs1.html

Tabs2
http://dobry-katalog.cba.pl/x/tabs2.html

Jak ktoś ma pomysł jak to naprawić to będę wdzięczny. Ja walcze z tym już kilka ładnych godzin i nie wpadłem na rozwiązanie.
A poniewąż js i jquery nie znam za bardzo to błądzę jak ślepy w ciemnościach.

Proszę o podpowiedz.
Fifi209
Jedyna rada na zapamiętanie to:
1) Cookie
2) Sesja

1. Cookie - zapisujesz do cookie i później odczytujesz i ustawiasz na daną zakładkę
2. Sesja - przy zmianie zakładki, przez ajax'a wysyłasz żądanie, które do sesji zapisze, którą zakładkę aktualnie przeglądasz. Po odświeżeniu strony, wyślesz żądanie do serwera, który w odpowiedzi wyciągnie dane sesji i zwróci dany identyfikator zakładki.
Szymon80
No własnie kolega z innego forum coś takiego skonstruował. Ma to swoje zalety ale i też wady.
Kod wygląda tak

Kod
$(function () {
if ( $.cookie("tab") != 'undefined' ) {
zaznacz = $.cookie("tab");
$("a[href='"+ zaznacz +"']").addClass('selected');

} else zaznacz = ':first';


var tabContainers = $('div.tabs > div');
tabContainers.hide().filter(zaznacz).show();

$('div.tabs ul.tabNavigation a').click(function () {
tabContainers.hide();
tabContainers.filter(this.hash).show();
$.cookie("tab", this.hash);

$('div.tabs ul.tabNavigation a').removeClass('selected');
$(this).addClass('selected');
return false;
}).filter(zaznacz).click();
$(zaznacz).addClass('selected');
});


Jednak jest jeden problem, przy pierwszej wizycie, zanim kliknę na którąkolwiek zakładkę nie pojawia się żadna z zakładek.
Przykład http://dobry-katalog.cba.pl/x/tabs3.html
Jak wiecie jak to naprawić to będę wdzięczny.

Poza tym z cookie jest jeszcze jeden mały problem. Nie można skierować kogoś bezpośrednio do danej zakładki poprzez link. W pierszym przypadku da sie tak zrobić bez problemów. Więc wolałbym właśnie to pierwsze rozwiązanie zastosować.

Pozdrawiam.
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.