jQuery cookie 来记住哪个导航列表打开了?

发布于 2024-12-25 23:44:31 字数 889 浏览 1 评论 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

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

I have cobbled the below together in my (very) humble jQuery hackish way:

$(".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 is here: http://jsfiddle.net/FWzWu/8/

I have never used the jquery cookie plugin, but would like to use it now to remember the users menu state from page to page. Using the github plugin here: https://github.com/carhartl/jquery-cookie

Any help is most appreciated!
Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

抽个烟儿 2025-01-01 23:44:31

第一次尝试(我添加了对 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');
        }
    });
});

显然,该解决方案假设您的容器的数量和顺序永远不会改变;如果这样做,错误的容器最终将在页面加载时展开:)

A first stab (I added a call to event.preventDefault() to stop the default anchor action from happening on click - you may need to remove this).

It could do with some cleaning up, for example it would be good to take advantage of event delegation to capture the click event on anchor elements, hopefully it conveys how to use the plugin and where to use it.

 $(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');
        }
    });
});

Obviously, this solution assumes that your containers are never going to change in number and order; if they do, the wrong container will end up being expanded on page load :)

机场等船 2025-01-01 23:44:31

在您列出的页面(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() 语句来确定要显示的内容。

这有帮助吗?如果需要的话我可以详细说明。

On the page you list (the github one) there is a readme, I've never used the plugin but it looks simple enough.

Make sure you include the script;

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

Now every time you want to change the cookies value (or create the cookie in the first place) use;

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

change *cookie_name* and *cookie_value* to whatever you desire. For example

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

Then every time you load the page run this inside the document.ready;

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

Then you can run if() statements to determine what to display.

Does this help? I can elaborate if necessary.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文