首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的jquery在多个页面中不可用?

问为什么我的jquery在多个页面中不可用?
EN

Stack Overflow用户
提问于 2012-02-03 09:23:24
回答 1查看 5.9K关注 0票数 6

本周,我研究并组装了一些jquery (这是我第一次使用jquery)来控制自定义WordPress sidebar.php文件中的可折叠菜单。菜单是动态生成的,使用wp_query根据自定义分类法和自定义排序顺序等选择和排序自定义post类型(因此没有插件解决方案)。

在网站访问者浏览内容时,我希望维护菜单部分的展开/折叠状态。使用jquery,我似乎正在成功地将唯一的cookie名称写入浏览器,并且我正在成功地传递标记的“展开”或“折叠”类值。

但是,cookies不能跨多个页面工作--如果您导航到另一个页面,在单击菜单项之前不会设置新的cookie。如果您点击back浏览器并返回到上一页,您在前一页上设置的cookies仍然是设置的(这很好)。请注意,当导航到新页面时,菜单确实会重新生成,但是菜单内容很少更改(因此ID是稳定的),cookie只适用于当前会话(并且仍然应该从前一页继续保存)。

我已经尝试过设置PHP,它们在页面和页面之间都能很好地保持。但是我的jquery cookie似乎是特定于页面的,所以我做了一些错误的事情。

下面是显示在我的PHP页面中的jquery代码,用于控制菜单和编写cookie(注意:I am链接到jquery.cookie.js插件):

代码语言:javascript
复制
        <script type="text/javascript">
        $(document).ready(function() {
            setTimeout(function() {
                $('#port-menu > li > a.expanded + ul, #port-menu > li ul li > a.collapsed + ul').slideToggle('medium');
                $('#port-menu > li > a').click(function() {
                    $(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').slideToggle('medium');
                    var vartag = $(this).get(0).tagName.toLowerCase();
                    var varclass = $(this).attr('class');
                    var cookiename = $(this).parent().attr('id');
                    $.cookie(cookiename, $(this).attr('class'));
                });
                $('#port-menu > li ul li > a').click(function() {
                    $(this).toggleClass('expanded').toggleClass('collapsed').parent().find('> ul').slideToggle('medium');
                    var vartag = $(this).get(0).tagName.toLowerCase();
                    var varclass = $(this).attr('class');
                    var vargenre = $(this).parent().parent().parent().attr('id');
                    var varoutlet = $(this).parent().attr('id');
                    var cookiename = vargenre + varoutlet;
                    $.cookie(cookiename, $(this).attr('class'));
                });
            }, 250);
        });
    </script>

例如,动态创建的cookie名称和值如下所示:

genre2 :塌陷

genre3 :扩展

genre1outlet2 :扩展

genre2outlet3 :扩展

genre2outlet4 :扩展

如前所述,我对jquery很陌生。我也刚开始使用曲奇饼。任何帮助都将不胜感激。

一旦我完成了这个任务,我就不知道如何从我的一系列cookie中获取信息,并将类应用到我的菜单中--但这是另外一个问题。

EN

回答 1

Stack Overflow用户

发布于 2012-02-03 09:34:27

我认为您应该尝试指定一个路径。看起来可能是这样的:

代码语言:javascript
复制
$.cookie(cookiename, $(this).attr('class'), { path: '/' });

然后,当您设置cookie一次,它将对所有网站有效。默认路径是设置cookie的子页的路径。在这种情况下,cookie只对该子页可用。

这个规则(我指的是路径)一般适用于cookie。不仅仅是由jQuery创建的。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9126320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档