Cześć.
Mam listę generowaną przez system. Lista jest dzielona na poszczególne części, po 40 przez jQuery:
<script> /* startowe ustawienia paginacji */ function paginate(page,className, perPage) { if (perPage === undefined) { perPage = 40; } $('ul.'+className+' li').addClass('hidden'); $('ul.'+className+' li').each(function (k, v) { if (k >= page * perPage && k < (page + 1) * perPage) { $(v).removeClass('hidden'); } }); }; /* po kliknięciu w link paginacji */ $('a.paginate').click(function () { let page = $(this).data('page'); let classname = $(this).data('classname'); paginate(page, classname); }); /** załaduj pierwsze 40 linków do sidebara **/ paginate('0', 'sidebar_list_1'); </script>
I to działa super. Sidebar wyświetla trzy strony w paginacji, które wyświetlają odrębne porcje linków, które można przeklikiwać. Tyle, że na stronach 2 i 3 kliknięcie w dowolny wyświetlony link powoduje przeładowanie całej strony, wyświetlenie jej i załadowanie w sidebarze strony 1-ej zamiast tej, z której nastąpiło wywołanie linku.
Ktoś poradził mi, żeby zaprząc do tego cookie, co też zrobiłem:
<script> /* startowe ustawienia paginacji */ function paginate(page,className, perPage) { if (perPage === undefined) { perPage = 40; } $('ul.'+className+' li').addClass('hidden'); $('ul.'+className+' li').each(function (k, v) { if (k >= page * perPage && k < (page + 1) * perPage) { $(v).removeClass('hidden'); } }); }; /* po kliknięciu w link paginacji */ $('a.paginate').click(function () { let page = $(this).data('page'); let classname = $(this).data('classname'); paginate(page, classname); /* zapisz plik cookie z klikniętym nrem w paginacji */ document.cookie = 'pageId='+page+''; }); /** funkcja odczytu pageId z cookie **/ function readCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } /** przytnij linki w sidebarze do 40-tu przy ładowaniu strony **/ var x = readCookie('pageId'); paginate(x, 'sidebar_list_1'); </script>
Po kliknięciu w pierwszy link paginacji i któryś wyświetlony link w sidebarze wszystko działa super - strona pamięta, z którego sidebara została wywołana i wyświetla go. Tak samo przy trzecim linku w paginacji. Ale coś dziwnego dzieje się z drugim linkiem, bo po kliknięciu w drugi link paginacji wyświetla zawartość sidebaru jak powinien, ale po kliknięciu w jakiś link z wygenerowanej puli linków sidebara, dołącza do niej automatycznie zawartość, która powinna być (i jest) generowana również przez trzeci link z paginacji.
Nie mam już koncepcji co z tym zrobić. Moglibyście rzucić swoim mądrym okiem?