【问题标题】:Keeping A jQuery menu open with cookies使用 cookie 保持 jQuery 菜单打开
【发布时间】:2013-12-22 03:56:39
【问题描述】:

我一直在玩我在这个网站上找到的一些 jQuery cookie,我认为 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();
})

});

【问题讨论】:

    标签: javascript jquery html css cookies


    【解决方案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/

    【讨论】:

    • 非常感谢,在我为 jquery 库提供服务后,它起到了很大的作用。你有没有机会解释发生了什么,所以我可以从中学习?还有一种方法可以设置它在一小时后过期吗?再次感谢
    • 一直在玩它,似乎当您实际单击菜单项时它会关闭菜单?希望在您单击一个项目后保持打开状态。但除此之外,它的效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多