2009-03-01 13 views
9

Używam biblioteki jquery w moim projekcie. Mam straszny problem z zakładkami jQuery. Rozwiązania są takie, że kiedy znajdowałem się na trzeciej zakładce, wysyłam mój formularz, zakładki są ponownie ładowane i przechodzę do pierwszej zakładki. Szukam rozwiązania długi czas.Problem z odkładaniem kart jQuery

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#example > ul").tabs({ remote: true, cache: true }); 
    });  
</script> 

jak rozwiązać ten problem? thx swoje odpowiedzi.

Odpowiedz

13

Karty mogą używać plików cookie do przechowywania bieżącej karty. Spójrz na zakładki documentation. W Opcjach listy jest przykładem jak używać cookies do przechowywania bieżącą kartę:

$('.selector').tabs({ cookie: { expires: 30 } }); 

Wymaga to jquery cookies plugin zostać włączone chociaż.

+0

Dla mnie było to najlepsze i najłatwiejsze rozwiązanie do wdrożenia. Mam wiele kart na trzech różnych stronach, a karty utrzymują ich stan na podstawie kliknięć tab i odsłon stron. Niesamowite. –

+0

Ahh, to wygląda na idealne rozwiązanie problemu, który mam z częściowymi widokami na kartach ... niestety strona jquery została usunięta z powodu ataków spamerów reklamowych, do linków do dokumentacji zakładek i wtyczki do ciastek jquery są teraz niedostępne ... – Dronz

24

Nie określić, czy używasz ASP.NET, ale jeśli można zapisać aktualnie wybraną kartę w < asp: HiddenField/> zamiast cookie:

<script type="text/javascript" language="javascript"> 
    $(function() { 
     $("#example").tabs({ 
      show: function() { 
       var sel = $('#example').tabs('option', 'selected'); 
       $("#<%= hidLastTab.ClientID %>").val(sel); 
      }, 
      selected: <%= hidLastTab.Value %> 
     }); 
    }); 
</script> 
<asp:HiddenField runat="server" ID="hidLastTab" Value="0" /> 

Jeśli nie ASP.NET, prawdopodobnie możesz zrobić coś podobnego.

+1

To rozwiązanie działało idealnie dla mnie przy użyciu ASP.net Dzięki !!! –

+0

To niesamowite rozwiązanie! –

+0

Próbowałem wielu innych rozwiązań bezskutecznie. Ten działał idealnie. Dziękuję bardzo. –

0

że ten sam problem, ustalonego przez dodanie następujących na wypustki jquery wybranej procedury obsługi zdarzeń:

$("div.ui-tabs-panel").html(""); 

skutecznie czyści wszystkie istniejące panele zapobiec postać stosu.

1

Próbowałem użyć rozwiązania opublikowanego przez joelsand. Jednak opcje i zdarzenia kart jQuery zostały zmienione. Aktualna dokumentacja to http://api.jqueryui.com/tabs/.

Zamiast zdarzenia "show" użyłem zdarzenia "aktywowanego". Zamiast opcji "wybrana" użyłem opcji "aktywny". Zamiast ukrytego pola użyłem zmiennej JavaScript (zadeklarowanej poza UpdatePanel)

+0

Nazwa zdarzenia to ** aktywuj ** (nie "aktywowane"). – fortboise