Вот простая реализация сохранения и извлечения cookie:
function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
Затем, чтобы сохранить / извлечь данные cookie с помощью вкладок пользовательского интерфейса jQuery:
$(function() {
// retrieve cookie value on page load
var $tabs = $('ul.tabs').tabs();
$tabs.tabs('select', getCookie("selectedtab"));
// set cookie on tab select
$("ul.tabs").bind('tabsselect', function (event, ui) {
setCookie("selectedtab", ui.index + 1, 365);
});
});
Конечно,вы, вероятно, захотите проверить, установлен ли файл cookie, и возвращает ли он 0 или что-то еще, чтобы getCookie
не возвращало неопределенное значение.
В примечании, ваш селектор ul.tabs
может быть улучшен указаниемвместо этого вкладки по идентификатору.Если у вас действительно есть коллекция вкладок на странице, вам понадобится лучший способ сохранить куки по имени - что-то более конкретное, для чего коллекция вкладок была выбрана / сохранена.
ОБНОВЛЕНИЕ
Хорошо, я исправил использование ui.index, теперь оно сохраняется с шагом +1 к индексу вкладок.
Вот рабочий пример этого в действии: http://jsbin.com/esukop/7/edit#preview
ОБНОВЛЕНИЕ для использования с jQuery Tools
В соответствии с jQuery Tools API , оно должно работать следующим образом:
$(function() {
//instantiate tabs object
$("ul.tabs").tabs("div.panes > div");
// get handle to the api (must have been constructed before this call)
var api = $("ul.tabs").data("tabs");
// set cookie when tabs are clicked
api.onClick(function(e, index) {
setCookie("selectedtab", index + 1, 365);
});
// retrieve cookie value on page load
var selectedTab = getCookie("selectedtab");
if (selectedTab != "undefined") {
api.click( parseInt(selectedTab) ); // must parse string to int for api to work
}
});
function getCookie(c_name) {
var i, x, y, ARRcookies = document.cookie.split(";");
for (i = 0; i < ARRcookies.length; i++) {
x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
x = x.replace(/^\s+|\s+$/g, "");
if (x == c_name) {
return unescape(y);
}
}
}
function setCookie(c_name, value, exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value = escape(value) + ((exdays === null) ? "" : "; expires=" + exdate.toUTCString());
document.cookie = c_name + "=" + c_value;
}
Вот рабочий (не стилизованный) пример: http://jsbin.com/ixamig/12/edit#preview
Вот что я вижу в Firefox при проверке файлов cookie из примера jsbin.com: