Как использовать локальное хранилище для активного класса?

0

Как сохранить cookie, сохраненный в выбранном пункте меню, с помощью локального хранилища?

Меню -

<ul class="nav nav-pills">
    <li class="active"><a href="#" >Customers</a></li>
    <li><a href="#" >Statics</a></li>
    <li><a href="#" >payroll</a></li>
</ul>

Переключение активных class-

<script type="text/javascript">
    $(function () {
        $('.nav-pills li').click(function () {
            $(this).siblings().removeClass('active');
            $(this).addClass('active');
        });
    });
</script>

Использование localstorage я tried-

<script type="text/javascript">
    $(function () {
        $('.nav-pills li').click(function () {
            $(this).siblings().removeClass('active');
                var menuactive = localStorage.setItem('mySelectValue', $(this).addClass('active');
                $(this).addClass(localStorage.getItem('mySelectValue'));
            });
        });
</script>

Теперь это мне не помогло.

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

  • 0
    Это недопустимый синтаксис: var menuactive= localStorage.setItem('mySelectValue', $(this).addClass('active');
Теги:
local-storage

3 ответа

2

Похоже, вы хотите вспомнить, какой элемент (последний раз, до обновления) был активным классом.

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

$(function () {
    $('.nav-pills li').click(function () {

        $(this).siblings().removeClass('active');
        $(this).addClass('active');

        var activeIndex = $(this).index();
        localStorage.setItem('mySelectValue', activeIndex);
    });

И тогда у вас может быть функция onload, что-то вроде этого...

    var activeIndex = localStorage.getItem('mySelectValue');
    if (isNaN(activeIndex)) {
        console.log('nothing stored');
    } else {
        $('.nav-pills li:nth-child('+activeIndex+')').addClass('active');
    }
  • 0
    это isNaN не isNan, вы получите isNan не определено
  • 0
    @narahari_arjun хороший улов, спасибо!
1

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

localStorage.setItem('ActiveClass', ClassName);

var activeClass = localStorage.getItem('ActiveClass');
$(item).addClass(activeClass);

Если вы использовали KnockoutJS http://knockoutjs.com/, то вы можете сохранить часть своего видаModel в локальном хранилище. Этот вопрос обсуждает это.

Как я могу реализовать MVVM с автономным хранилищем и Knockout.js?

Надеюсь, это поможет.

0

$(this).addClass('active') вернет $(this), jquery-версию щелчка li, которая изменяется при каждой перезагрузке.

Что вам нужно хранить это абсолютная точка отсчета, как индекс li, который щелкнул:

<script type="text/javascript">
    $(function () {
        $('.nav-pills li').click(function () {
            $(this).siblings().addSelf().removeClass('active');
            localStorage.setItem('mySelectValue', $(this).index());
            $(this).addClass('active');
        });
    });
</script>

Ещё вопросы

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