Как создать горизонтальную вкладку jQuery, которая загружает страницу один раз - PullRequest
1 голос
/ 31 марта 2011

Мне нужна горизонтальная панель вкладок jQuery (снимок экрана ниже), где нажатие на вкладку загружает внешнюю страницу в div, но нажатие на нее после загрузки не загружает страницу снова.

Есть 7 вкладок Wall, Latest, Discussion, Poll, Club Message, Create.

http://i.stack.imgur.com/Y2tTx.jpg

Демонстрацию можно посмотреть здесь http://www.web -shine.in / tabs /

Я хочу, чтобы вкладка загружала страницу один раз, и в следующий раз, когда пользователь нажимает на нее, она должна показывать страницу из кэша браузера, а не с сервера.

Как лучше всего это кодировать?

Ответы [ 5 ]

2 голосов
/ 02 апреля 2011

Используйте функцию one () .

Ex:

$("#foo").one("click", function() {
  alert("click can only be done once.");
});

UPDATE

Если вы пытаетесь кэшировать ответ Ajax, чтобы последующие запросы Ajax, которые соответствуют исходным параметрам Ajax, возвращали кэшированный ответ вместо нового вызова, тогда я настоятельно рекомендую использовать этот отличный плагин jQuery http://plugins.jquery.com/project/ajax-cache-response

1 голос
/ 02 апреля 2011

Извините, если я ошибся, но;

$('#tabs').tabs({cache: true});

Этого достаточно.

1 голос
/ 02 апреля 2011

Попробуйте что-то вроде этого:

var cache = {};

function loadTab(tabObj) {
    if(!tabObj || !tabObj.length){ return; }
    $(containerId).fadeOut(100);

    var target = tabObj.attr('href');

    if (cache[target] !== undefined) {
        $(containerId).html(cache[target]);
        $(containerId).slideDown('medium');
        $(containerId).fadeIn('slow');
    } else {
        $(containerId).load(tabObj.attr('href'), function()
        {
            cache[target] = $(containerId).html();
            $(containerId).slideDown('medium');
            $(containerId).fadeIn('slow');
        });
    }
}
1 голос
/ 31 марта 2011

Попробуйте сделать AJAX-вызов в событии "show" на вкладках.Это должно срабатывать только при отображении вкладки (т. Е. При изменении выбранной вкладки).

http://docs.jquery.com/UI/Tabs#event-show

1 голос
/ 31 марта 2011

Все, что вам нужно сделать, это поместить этот пример в вызов AJAX:

http://jqueryui.com/demos/tabs/#manipulation

...