Jquery Accordion, оставайтесь открытыми при обновлении / изменении страницы

0

Я пробую этот код для своего jquery Accordion

        (function(jQuery){
         jQuery.fn.extend({  
             accordion: function() {       
                return this.each(function() {

                    var $ul = $(this);

                    if($ul.data('accordiated'))
                        return false;

                    $.each($ul.find('ul, li>div'), function(){
                        $(this).data('accordiated', true);
                        $(this).hide();
                    });

                    $.each($ul.find('a'), function(){
                        $(this).click(function(e){
                            activate(this);
                            //alert(this);
                            return void(0);
                        });
                    });
                    var sPath = window.location.pathname;
                    var sPage = sPath.substring(sPath.lastIndexOf('/') + 1);
                    var findvar=sPage;
                    var active = (findvar)?$(this).find('a[href='+ findvar + ']')[0]:'';

                    if(active){
                        activate(active, 'toggle');
                        $(active).parents().show();
                    }

                    function activate(el,effect){
                        $(el).parent('li').toggleClass('active').siblings().removeClass('active').children('ul, div').slideUp('fast');
                        $(el).siblings('ul, div')[(effect || 'slideToggle')]((!effect)?'fast':null);
                    }

                });
            } 
        }); 
    })(jQuery);

Но когда я обновляю страницу, весь Accordion рушится. Но я хочу это, когда обновляю страницу. Держите выбранный Аккордеон открытым, потому что мой Аккордеон - боковая навигация, размещенная в Include (php). так что один php файл для всех сторон аккордеона навигации, поэтому всякий раз, когда я нажимал на меню, страница должна быть изменена и сохранить выбранный Аккордеон открытым.

Теги:
jquery-ui-accordion
accordion

3 ответа

0

Если вы хотите сохранить выбранные данные аккордеона для этого конкретного сеанса, вы можете использовать любую технику хранения в следующем порядке

1. Локальное хранилище HTML 5

2.Cookie

3.Скрытое поле

//Для сохранения выбранного значения в течение длительного времени.

4.Database (вы можете использовать ajax-вызов для сохранения значения в базе данных)

затем проверьте, есть ли сохраненное значение в готовом документе и сделайте этот аккордеон открытым

$(document.ready(function(){
var selectedaccordianId = $("#hidSavedAccordinId").val();

 if($.trim(selectedaccordianId) != "")
{
 $("#" + selectedaccordianId).show(); 
}
}));
0

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

0

Ему не нужно использовать cookie, он может использовать веб-хранилище: http://www.w3schools.com/html/html5_webstorage.asp

  • 0
    Как я использую это в моем коде? Извините, но я новичок в Jquery. Так что, если бы вы могли, чем Тенз
  • 0
    Хотя веб-хранилище работает быстрее и безопаснее, чем файлы cookie, оно не поддерживается <IE8, поэтому зависит от требований поддержки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню