如何在页面导航后跟踪手风琴(在母版页中)打开状态?
我正在使用jquery手风琴作为asp.net主页中的菜单。
这是jquery
$(document).ready(function() { $(".header").click(function() { $(this).toggleClass("display"); $(this).next("div .menu_body").slideToggle(500); }); });
这是HTML。
根据上面的代码,当单击标题时,内容(menu_body)将滑动切换。 menu_body默认隐藏,当用户单击标题时,menu_body可见。
示例问题:例如:2 menu_body可见,当我点击href =“https://stackoverflow.com/questions/6039343/how-to-keep-track-of-accordionin-masterpage-open-status-after-page-navigation/page1.aspx”时,页面将被导航到https://stackoverflow.com/questions/6039343/how-to-keep-track-of-accordionin-masterpage-open-status-after-page-navigation/page2.aspx但是手风琴将返回默认值,其中所有menu_body都被隐藏。
由于我在母版页中使用此手风琴,因此无法存储值以在页面导航时将手风琴menu_body状态跟踪到隐藏字段中。 隐藏字段中的值将被重置。
我想将此存储在会话中,但在客户端页面中,它不允许我们将值存储到会话中。
对此有何解决方案?
如果您向标头添加id
属性:
Header-1
然后你可以在你的处理程序中拉出id
并使用jquery.cookie
跟踪cookie中的打开面板:
$(".header").click(function() { var $this = $(this); if(!$this.hasClass('display')) $.cookie('open_panel', this.id); $this.toggleClass("display"); $this.next("div .menu_body").slideToggle(500); });
如果你想一次打开多个面板,你需要稍微使用open_panel
的存储格式,但是简单的CSV列表可能就足够了; 我将把这部分作为练习留给读者。 您还需要在页面加载时检查cookie并打开相应的面板。
如果您希望将设置保留为用户帐户首选项的一部分,您还可以跟踪服务器上cookie的值。
- 使用Ajax在.NET MVC4中加载部分视图
- 为什么在asp.net中需要RegisterStartupScript来实现简单的jquery helloworld?
- 如何使用jQuery禁用div或表中的所有Element
- 如何使用C#string Builder制作简单的JSON对象
- 如何将参数从JQuery传递到ASP.NET webmethod?
- 使用asp.net的jQuery AJAX Post
- asp.net是否可以创建一个类似于ms-word fontsize的下拉列表
- 使用jQuery获取asp:HiddenField的值
- dropinlist的selectedindexchanged事件不适用于jquery