在回发后保持jquery手风琴的特定状态

时间:2012-09-28 06:35:03

标签: jquery asp.net jquery-ui jquery-ui-accordion

我有问题是在ASP.NET页面的回发后点击li时保持活动手风琴打开。

这是脚本:

$(document).ready(function () {
    $('#nav > li > a').click(function () {
        if ($(this).attr('class') != 'active') {
            $('#nav li ul').slideUp();
            $(this).next().slideToggle();
            $('#nav li a').removeClass('active');
            $(this).addClass('active');
        }
    });

});

这是标记:

                            <ul id="nav">
                                <li><a href="#">Item 1</a>
                                    <ul>
                                        <li><a href="#">Sub-Item 1 a</a></li>
                                        <li><a href="#">Sub-Item 1 b</a></li>
                                        <li><a href="#">Sub-Item 1 c</a></li>
                                    </ul>
                                </li>
                                <li><a href="#">Item 2</a>
                                    <ul>
                                        <li><a href="#">Sub-Item 2 a</a></li>
                                        <li><a href="#">Sub-Item 2 b</a></li>
                                    </ul>
                                </li>
                                <li><a href="#">Item 3</a>
                                    <ul>
                                        <li><a href="#">Sub-Item 3 a</a></li>
                                        <li><a href="#">Sub-Item 3 b</a></li>
                                        <li><a href="#">Sub-Item 3 c</a></li>
                                        <li><a href="#">Sub-Item 3 d</a></li>
                                    </ul>
                                </li>
                                <li><a href="#">Item 4</a>
                                    <ul>
                                       <li><a href="Facilitysoft_masterdetails.aspx?view=1">Site Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=2">Phase Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=3">Block Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=4">Subblock Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=5">Floor Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=6">Flat Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=7">Issue Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=8">Gym/Swim Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=9">Stock Master</a></li>
                                            <li><a href="Facilitysoft_masterdetails.aspx?view=10">Clubhouse Master</a></li>
                                    </ul>
                                </li>
                            </ul>

例如: 当我点击“第4项”然后点击“会所大师”时,特定的aspx页面即将出现,手风琴可以折叠并且需要维持该特定状态。

2 个答案:

答案 0 :(得分:0)

这里的问题是,在回发之后,HTML将呈现回其默认状态..这相当于服务器记住的页面刷新。

所以你在这里的选项是在endRequest处理程序中处理这个,它在回发结束后被触发..

$(function() {
     PostBack();

     Sys.WenForms.PageRequestManager.getInstance().add_endRequest(PostBack);
});

function PostBack(){
     // You need to save the state of the Accordion
     // just before the postback
     // and handle it here..
     // Maybe store it in a hiddenField 
     // and retrieve it to change the settings..
}

答案 1 :(得分:0)

我有类似的问题。即想要在GET请求的情况下保存手风琴状态。在我的主模板中,写了一个页面的开关案例

if (strPage.EndsWith("page1.aspx")
                || strPage.EndsWith("page2.aspx"))

                this.hdnfldtset.Value="ELS";
            else if (strPage.EndsWith("page3.aspx")                
                || strPage.EndsWith("page4.aspx")

                this.hdnfldtset.Value="CMS";

然后,在母版的javascript中,读取此隐藏值并打开/关闭相应的手风琴部分。当您使用GET页面的项目很简单时,这将有效。我的申请就是这种情况。如果在你的情况下,它是回发,那么你可以使用隐藏字段来设置和使用javascript检索。