0

我以我(非常)简陋的 jQuery hackish 方式将以下内容拼凑在一起:

$(".toggle_container").hide();
                $(".trigger a").addClass("close");
                $(".trigger a").click(function() {
                $(".toggle_container").slideUp('200','swing');
                 $(".trigger a").removeClass("open").addClass("close");
                    if     ($(this).next(".toggle_container").is(":hidden")) {
                            $(this).next(".toggle_container").stop(true,false).slideToggle('200','swing');

                        }
                });

jsfiddle 在这里:http: //jsfiddle.net/FWzWu/8/

我从未使用过 jquery cookie 插件,但现在想用它来记住页面之间的用户菜单状态。在此处使用 github 插件:https ://github.com/carhartl/jquery-cookie

非常感谢任何帮助!谢谢!

4

2 回答 2

1

第一次刺(我添加了一个调用来event.preventDefault()阻止默认锚点操作在点击时发生 - 您可能需要删除它)。

它可以做一些清理工作,例如利用事件委托来捕获锚元素上的点击事件会很好,希望它能传达如何使用插件以及在哪里使用它。

 $(function () {   

    // give each container a unique class
    var containers = $("ul.toggle_container").hide().each(function (i,v) {
        $(this).addClass('container_' + i);       
    });

    var value = $.cookie('toggled_container');     

    // if we have a value in the cookie, use it to show that container
    if (value) {
        $('ul.' + value).show();
    }

    var anchors = $("li.trigger a");

    anchors.addClass("close").click(function() {
        containers.slideUp('200','swing');
        anchors.removeClass("open").addClass("close");
        var nextContainer = $(this).next("ul.toggle_container");
        if (nextContainer.is(":hidden")) {
            // capture the unique class that we have given the container
            $.cookie('toggled_container', nextContainer.attr('class').match(/container_\d+/));
            nextContainer.stop(true,false).slideToggle('200','swing');
        }
    });
});

显然,这个解决方案假设你的容器在数量和顺序上永远不会改变;如果他们这样做了,错误的容器最终会在页面加载时被扩展:)

于 2012-01-10T00:01:52.317 回答
0

在您列出的页面(github 页面)上有一个自述文件,我从未使用过该插件,但它看起来很简单。

确保包含脚本;

<script src="/path/to/jquery.cookie.js"></script>

现在每次您想更改 cookie 值(或首先创建 cookie)时使用;

$.cookie('cookie_name', 'cookie_value', { expires: 7 });

将 *cookie_name* 和 *cookie_value* 更改为您想要的任何内容。例如

$.cookie('nav_choice', '1', { expires: 7 });

然后每次加载页面时在 document.ready 中运行它;

var nav = $.cookie('nav_choice');

然后您可以运行 if() 语句来确定要显示的内容。

这有帮助吗?如有必要,我可以详细说明。

于 2012-01-09T23:51:39.310 回答