0

在 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 页面将在手风琴可折叠并需要保持该特定状态之后出现。

4

2 回答 2

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 之类的页面时,这将起作用 simple 。我的申请就是这种情况。如果在您的情况下,它是回发,那么您可以使用隐藏字段通过 javascript 设置和检索。

于 2014-04-23T07:28:19.343 回答
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..
}
于 2012-09-28T06:41:39.517 回答