Использование Cookie для табов
Здравствуйте. Помогите с сохранением выбора пользователя в табах. Необходимо, чтобы после перезагрузки страницы выбор сохранялся.
HTML: <div class="filt-bx"> <div class="t">Проекты:</div> <ul class="list"> <li><a class="sw-links sw-all" href="">Все</a></li> <li><a class="sw-links sw-l1 act" href="">Город</a></li> <li><a class="sw-links sw-l2" href="">Год</a></li> <li><a class="sw-links sw-l3" href="">Функция</a></li> </ul> <div class="line"></div> <ul class="list-town lanks1"> Пункты меню 1 </ul> <ul class="list-town lanks2"> Пункты меню 2 </ul> <ul class="list-town lanks3"> Пункты меню 3 </ul> </div> $(function() { $(".toggle_mnu").click(function() { $(".sandwich").toggleClass("active"); $(this).toggleClass("active"); $('.header .right').toggle(); }); $(".sxem-item .opener").click(function() { $(this).parent().toggleClass("act"); }); //параллакс function parallax(){ var scrolled = $(window).scrollTop(); $('.compamy-box .bg').css('top', -(scrolled * 0.15) + 'px'); } $(window).scroll(function(e){ parallax(); }); $(".sw-links").click(function(event) { event.preventDefault(); $('.list-town').hide(); $(".sw-links").removeClass("act"); $(this).addClass("act"); }); $(".sw-l1").click(function(event) { $('.lanks1').show(); }); $(".sw-l2").click(function(event) { $('.lanks2').show(); }); $(".sw-l3").click(function(event) { $('.lanks3').show(); }); $(".sw-all").click(function(event) { $('.list-town').hide(); }); }); |
|
Цитата:
|
steepfox,
:-? добавить в строку 42 вашего кода var a = $(".sw-links"), indx = localStorage.getItem("indx"); a.on("click", function() { indx = a.index(this); localStorage.setItem("indx", indx) }); indx !== null && a.eq(indx).click(); |
Пример работы с куками...
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <script src='https://code.jquery.com/jquery-latest.js'></script> <!-- <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> .act { color: red; } </style> <script type='text/javascript'> $(function(){ $('.list .sw-links').on('click',function(){ var o=$(this); var pr=o.closest('ul'); var it=pr.find('.sw-links').index(this); set_cookie('item',it); pr.find('.act').removeClass('act'); o.addClass('act') return false; }); var it=get_cookie('item'); if (it) { $('.list .act').removeClass('act'); $('.list .sw-links').eq(it).addClass('act') }; }); function set_cookie ( name, value, exp_y, exp_m, exp_d, path, domain, secure ){ var cookie_string = name + "=" + escape ( value ); if ( exp_y ) { var expires = new Date ( exp_y, exp_m, exp_d ); cookie_string += "; expires=" + expires.toGMTString(); } if ( path ) cookie_string += "; path=" + escape ( path ); if ( domain ) cookie_string += "; domain=" + escape ( domain ); if ( secure ) cookie_string += "; secure"; document.cookie = cookie_string; } function get_cookie ( cookie_name ){ var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' ); if ( results ) return ( unescape ( results[2] ) ); else return null; } </script> </head> <body> <div class="filt-bx"> <div class="t">Проекты:</div> <ul class="list"> <li><a class="sw-links sw-all" href="">Все</a></li> <li><a class="sw-links sw-l1 act" href="">Город</a></li> <li><a class="sw-links sw-l2" href="">Год</a></li> <li><a class="sw-links sw-l3" href="">Функция</a></li> </ul> </div> </body> </html> |
Цитата:
|
steepfox,
добавьте preventDefault var a = $(".sw-links"), indx = localStorage.getItem("indx"); a.on("click", function(event) { event.preventDefault() indx = a.index(this); localStorage.setItem("indx", indx) }); indx !== null && a.eq(indx).click(); |
steepfox,
если не поможет, то добавьте preventDefault во все клики строки 30-41 |
Цитата:
При нажатии на пункт Все, должен перекидывать на главную страницу, скорее всего из-за этого и возникает конфликт Решил проблему, убрав класс sw-links у пункта: "Все" |
steepfox,
indx !== null && +indx > 0 && a.eq(indx).click(); |
Часовой пояс GMT +3, время: 05:51. |