代码之家  ›  专栏  ›  技术社区  ›  Germ

ASP.NET面板jQuery幻灯片切换回发

  •  4
  • Germ  · 技术社区  · 16 年前

    我有一个带有隐藏样式的ASP.NET面板,我正在使用jquery使用超链接滑动切换面板。这个很好用。但是,如果我在页面上添加一个按钮导致回发,面板将默认为隐藏。我理解为什么会发生这种情况,但是当发生回发时,保持面板可见性状态的最佳方法是什么?

    <head runat="server">
        <title></title>
    
        <script type='text/javascript' src="jquery-1.4.1.min.js">
        </script>
    
        <style type="text/css">
            .panel
            {
                display: none;
            }
        </style>
    
        <script type="text/javascript">
            $(function() {
                $("#Link1").click(function(evt) {
                    evt.preventDefault();
                    $('#panelText').slideToggle('slow');
                });
            });
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:HyperLink ID="Link1" runat="server" NavigateUrl="#">SlideToggle
        </asp:HyperLink><br />
        <asp:Panel ID="panelText" runat="server" CssClass="panel">
            Some text</asp:Panel>
        <asp:Button ID="button1" runat="server" Text="Postback" />
        </form>
    </body>
    </html>
    
    2 回复  |  直到 16 年前
        1
  •  6
  •   Germ    16 年前

    以下是我解决问题的方法…

    <head runat="server">
        <title></title>
    
        <script type='text/javascript' src="jquery-1.4.1.min.js">
        </script>
    
        <style type="text/css">
            .panel
            {
                display: none;
            }
        </style>
    
        <script type="text/javascript">
            $(function() {
                $("#Link1").click(function(evt) {
                    evt.preventDefault();
                    $('#panelText').slideToggle('slow');
                    if ($('#panelText').hasClass('panel')) {
                        $('#PanelState').attr('value', 'true');
                    } else {
                        $('#PanelState').attr('value', 'false');
                    }                
                 });
            });
    
            $(document).ready(function() {
                if ($('#PanelState').attr('value') == 'false') {
                    $('#panelText').addClass('panel');
                }
            });
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:HiddenField ID="PanelState" runat="server" Value="false" />
        <asp:HyperLink ID="Link1" runat="server" NavigateUrl="#">SlideToggle
        </asp:HyperLink><br />
        <asp:Panel ID="panelText" runat="server">
            Some text</asp:Panel>
        <asp:Button ID="button1" runat="server" Text="Postback" />
        </form>
    </body>
    </html>
    
        2
  •  4
  •   TheVillageIdiot    16 年前

    在表单中添加隐藏字段:

     <asp:HiddenField id="hdnPanelState" runat="Server" value="false" />
    

    修改JS功能:

    <script type="text/javascript">
        $(function() {
            $("#Link1").click(function(evt) {
                evt.preventDefault();
                $('#panelText').slideToggle('slow');
                //YOU WILL ALSO NEED TO CALCULATE IF SHOWING PANEL OR HIDING 
                $("#hdnPanelState").attr("value","true");//Store Value
            });
        });
    </script>
    
    推荐文章