JQuery UI Tabs - конфликт между cookie и выбором только что добавленной вкладки? - PullRequest
1 голос
/ 18 апреля 2011

Я использую jquery.cookies , чтобы сохранить вкладку после обновления.

Мне бы также хотелось, чтобы после создания новой вкладки она была выбрана.

Использование инструкций jQuery UI, которые у меня есть:

    var cookieName = 'stickyTab';

    $(".tabs").tabs({
        fx: {
            opacity: 'toggle',
            duration: 'fast'
        },
        selected: ( $.cookies.get( cookieName ) || 0 ),
                    select: function( e, ui )
                {
                $.cookies.set( cookieName, ui.index );
                }
    });

    var $tabs = $('.tabs').tabs({
    add: function(event, ui) {
        $tabs.tabs('select', '#' + ui.panel.id);
    }
});

К сожалению, это не работает - когда я создаю новую вкладку, ранее открытая вкладка остается выбранной (возможно, потому что cookie переопределяет функцию select?

Мои вкладки создаются с помощью PHP POST, а данные извлекаются из БД и зацикливаются для создания элементов LI и DIV. (т.е. мои вкладки не , созданные непосредственно из JS).

У кого-нибудь есть предложения по решению этой проблемы?

Спасибо!

1 Ответ

0 голосов
/ 18 апреля 2011

Ваша ошибка связана с тем, что вы обновляете свои куки только через JavaScript, но добавляете новые вкладки через PHP при перезагрузке страницы. В результате новые вкладки добавляются, но не синхронизируются с вашим файлом cookie.

Поскольку свойство jQuery UI Tabs selected является индексом. А ваши вкладки создаются через массив, простой:

setcookie('stickyTab',count($array)-1);
// this will set the selected tab to the last appended tab

Обратите внимание, что этот оператор нужно запускать только при добавлении новых вкладок. В противном случае вы перезапишете набор файлов cookie через JS.

Если у вас возникнут какие-либо проблемы, обязательно прокомментируйте, и мы постараемся их исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...