2011-05-18 49 views
0

我正在使用jQuery手風琴作爲asp.net主頁上的菜單。如何在頁面導航後跟蹤手風琴(在masterpage中)打開狀態?

這是jQuery的

$(document).ready(function() { 
    $(".header").click(function() { 
     $(this).toggleClass("display"); 
     $(this).next("div .menu_body").slideToggle(500); 
    }); 
}); 

這是HTML。

<div id="MasterPage_Menu" class="menu_list"> 
    <p class="header">Header-1</p> 
    <div class="menu_body"> 
     <a href="page1.aspx">Link-1</a> 
    </div> 
    <p class="header">Header-2</p> 
    <div class="menu_body"> 
     <a href="page2.aspx">Link-2</a> 
    </div> 
    <p class="header">Header-3</p> 
    <div class="menu_body"> 
     <a href="page3.aspx">Link-3</a> 
    </div> 
    </div> 

根據上面的代碼中,當單擊頭時,內容(menu_body)將被滑動肘節。 menu_body在默認情況下隱藏,當用戶點擊標題時,menu_body可見。

例題:如:2 menu_body是可見的,當我點擊HREF =「page1.aspx這個」,該頁面將被導航到page2.aspx但手風琴將返回到默認的是所有的menu_body是隱。

由於我在母版頁中使用了這種手風琴,因此我無法存儲該值,以便在頁面導航時保持手風琴menu_body狀態進入隱藏字段。隱藏字段中的值將被重置。

我在考慮將它存儲在會話中,但在客戶端頁面中,它不允許我們將值存儲到會話中。

任何解決方案?

回答

2

如果添加id屬性的標題:

<p class="header" id="header-1">Header-1</p> 
    <div class="menu_body"> 
     <a href="page1.aspx">Link-1</a> 
    </div> 

然後你就可以拉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); 
}); 

你如果您想一次打開多個面板,但需要使用簡單的CSV列表可能就足夠了,那麼需要使用open_panel的存儲格式。我將把這部分作爲讀者的練習。您也希望在頁面加載時檢查cookie並打開相應的面板。

如果您想保留設置作爲用戶帳戶首選項的一部分,您還可以跟蹤服務器上的cookie值。

+0

@mu太短:我如何獲得在asp.net代碼後面設置的cookie值? – DEN 2011-05-18 03:16:18

+0

@DEN:我的asp.net很弱,但可能[這是來自MSDN](http://msdn.microsoft.com/en-us/library/ms178194.aspx)將會有所幫助。您可能會想要查看'$ .cookie'的'expires','path','domain'和其他選項。 – 2011-05-18 04:02:23

+0

@mu太短:我使用cookie面臨一些問題。對於您的信息,我設置的cookie只會引用我點擊的頁面。例如,在page1.aspx中,如果我將「abc」存儲到$ .cookie('open_panel')中,我只能在page1.aspx上檢索它。這意味着當我在page2.aspx時,我無法檢索我在page1.aspx中設置的「abc」值:( – DEN 2011-05-18 06:38:22

相關問題