Сохранение меню JQuery открытым с куки

0

Я играл с некоторыми кучами jQuery, которые я нашел на этом сайте, и cookie, я думаю, работает, но мое меню полностью перестает открываться.

Я очень новичок в jQuery, поэтому не знаю, где я могу ошибиться.

Я просто продолжал открывать ссылки, например, нажимаю ссылку 1, а затем элемент подменю, и когда страница загружается, ссылка 1 остается открытой.

Кто-то, пожалуйста, указывайте мне в правильном направлении!

спасибо

http://jsfiddle.net/pHgB7/

<ul class="nav">
<li><a>Link</a>

</li>
<li class="drop"><a>Link 1</a>

    <ul id="m1">
        <li><a href="#">Link 1 Item</a>

        </li>
        <li><a href="#">Link 1 Item</a>

        </li>
    </ul>
</li>
<li class="drop"><a>Link 2</a>

    <ul id="m2">
        <li><a href="#">Link 2 Item</a>

        </li>
        <li><a href="#">Link 2 Item</a>

        </li>
    </ul>
</li>
<li class="drop"><a>Link 3</a>

    <ul id="m3">
        <li><a href="#">Link 3 Item</a>

        </li>
        <li><a href="#">Link 3 Item</a>

        </li>
    </ul>
</li>

jQuery(function ($) {
// jQuery code in here can safely use $
$('.nav li')
.css({
cursor: "pointer"
})
$(".drop")
    .on('click', function () {
    $(this).find('ul').toggle();
})

});
Теги:
cookies

1 ответ

1
Лучший ответ

Здесь немного беспорядочный ответ:

jQuery(function ($) {
    // jQuery code in here can safely use $
    $('.nav li')
        .css({
            cursor: "pointer"
        });

    $(".drop")
        .on('click', function () {
            $(this).toggleClass('open');
            $(this).find('ul').toggle();
            $.cookie('open_items', 'the_value');
            openItems = new Array();
            $("li.drop").each(function(index, item) {
                if ($(item).hasClass('open')) {
                    openItems.push(index);
                }
            });
            $.cookie('open_items', openItems.join(','));
        });

    if( $.cookie('open_items') && $.cookie('open_items').length > 0 ) {
        previouslyOpenItems = $.cookie('open_items');
        openItemIndexes = previouslyOpenItems.split(',');
        $(openItemIndexes).each(function(index, item) {
            $("li.drop").eq(item).addClass('open').find('ul').toggle();
        });
    }
});

Для этого вам нужно будет включить библиотеку jquery.cookie.

Обновленную скрипку можно найти здесь: http://jsfiddle.net/pHgB7/2/

  • 0
    Большое спасибо, это сработало после того, как я обслужил библиотеку jquery. Есть ли шанс, что вы могли бы объяснить, что происходит, чтобы я мог извлечь уроки из этого? Также есть ли способ установить срок его действия, скажем, через час? еще раз спасибо
  • 0
    Просто играл с ним, и кажется, что когда вы нажимаете на элемент меню, меню закрывается? Хотелось бы, чтобы это оставалось открытым после того, как вы нажали на элемент. Но кроме этого он прекрасно работает!

Ещё вопросы

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