首页 > 解决方案 > 导航侧菜单中的项目不会折叠

问题描述

我正在开发一个 asp.net 网络表单应用程序,其母版页包含从数据库动态填充的导航侧菜单。

服务器端的一切都按我的预期工作,但是当我单击父菜单项时,客户端子菜单项并没有隐藏。

这是aspx页面代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="ReservedAreaMP.master.cs" Inherits="WEBSITE_FBC.PRESENTATION_LAYER.RESERVED_AREA.ReservedAreaMP" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Fearbetweencrowd Official Website</title>
    <link runat="server" rel="shortcut icon" type="image/x-icon" href="~/img/logo_iconaSito.png">
        
    <style type="text/css">
        .nav-side-menu
        {
            overflow: auto;
            font-family: verdana;
            font-size: 12px;
            font-weight: 200;
            background-color: #2e353d;
            position: fixed;
            top: 0px;
            width: 300px;
            height: 100%;
            color: #e1ffff;
        }
        .nav-side-menu .brand
        {
            background-color: #23282e;
            line-height: 50px;
            display: block;
            text-align: center;
            font-size: 14px;
        }
        .nav-side-menu .toggle-btn
        {
            display: none;
        }
        .nav-side-menu ul, .nav-side-menu li
        {
            list-style: none;
            padding: 0px;
            margin: 0px;
            line-height: 35px;
            cursor: pointer; /*   
.collapsed{
.arrow:before{
            font-family: FontAwesome;
            content: "\f053";
            display: inline-block;
            padding-left:10px;
            padding-right: 10px;
            vertical-align: middle;
            float:right;
    }
}
*/
        }
        .nav-side-menu ul :not(collapsed) .arrow:before, .nav-side-menu li :not(collapsed) .arrow:before
        {
            font-family: FontAwesome;
            content: "\f078";
            display: inline-block;
            padding-left: 10px;
            padding-right: 10px;
            vertical-align: middle;
            float: right;
        }
        .nav-side-menu ul .active, .nav-side-menu li .active
        {
            border-left: 3px solid #d19b3d;
            background-color: #4f5b69;
        }
        .nav-side-menu ul .sub-menu li.active, .nav-side-menu li .sub-menu li.active
        {
            color: #d19b3d;
        }
        .nav-side-menu ul .sub-menu li.active a, .nav-side-menu li .sub-menu li.active a
        {
            color: #d19b3d;
        }
        .nav-side-menu ul .sub-menu li, .nav-side-menu li .sub-menu li
        {
            background-color: #181c20;
            border: none;
            line-height: 28px;
            border-bottom: 1px solid #23282e;
            margin-left: 0px;
        }
        .nav-side-menu ul .sub-menu li:hover, .nav-side-menu li .sub-menu li:hover
        {
            background-color: Orange;
        }
        .nav-side-menu ul .sub-menu li:before, .nav-side-menu li .sub-menu li:before
        {
            font-family: FontAwesome;
            content: "\f105";
            display: inline-block;
            padding-left: 10px;
            padding-right: 10px;
            vertical-align: middle;
        }
        .nav-side-menu li
        {
            padding-left: 0px;
            border-left: 3px solid #2e353d;
            border-bottom: 1px solid #23282e;
        }
        .nav-side-menu li a
        {
            text-decoration: none;
            color: #e1ffff;
        }
        .nav-side-menu li a i
        {
            padding-left: 10px;
            width: 20px;
            padding-right: 20px;
        }
        .nav-side-menu li:hover
        {
            border-left: 3px solid #d19b3d;
            background-color: #4f5b69;
            -webkit-transition: all 1s ease;
            -moz-transition: all 1s ease;
            -o-transition: all 1s ease;
            -ms-transition: all 1s ease;
            transition: all 1s ease;
        }
        @media (max-width: 767px)
        {
            .nav-side-menu
            {
                position: relative;
                width: 100%;
                margin-bottom: 10px;
            }
            .nav-side-menu .toggle-btn
            {
                display: block;
                cursor: pointer;
                position: absolute;
                right: 10px;
                top: 10px;
                z-index: 10 !important;
                padding: 3px;
                background-color: #ffffff;
                color: #000;
                width: 40px;
                text-align: center;
            }
            .brand
            {
                text-align: left !important;
                font-size: 22px;
                padding-left: 20px;
                line-height: 50px !important;
            }
        }
        @media (min-width: 767px)
        {
            .nav-side-menu .menu-list .menu-content
            {
                display: block;
            }
        }
        body
        {
            margin: 0px;
            padding: 0px;
        }
    </style>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css"rel="stylesheet">
    <link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
    
    <script type="text/javascript">
        $(function () {
            $('li[data-toggle="collapse"]').each(function () {
                $(this).i
                if ($(this).next('ul').length == 0) {
                    $(this).removeAttr('data-toggle').removeAttr('data-target').removeClass('collapsed');
                    $(this).find('span.arrow').remove();
                }
            });
            $('ul#menuContent > ul').on('show.bs.collapse', function (e, obj) {
                $("ul#menuContent > ul").not(this).removeClass("in");
                var currentHead = $(this).prev("li");
                $("ul#menuContent > li").not(currentHead).removeClass("active");
                $(currentHead).addClass("active");
            });
        });
    </script>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
            <div class="nav-side-menu">
                <div class="brand">
                    F.B.C. Reserved Area
                </div>
                <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menuContent" ></i>
                <div class="menu-list">
                    <ul id="menuContent" class="menu-content collapse out">
                        <asp:Repeater ID="rptCategories" runat="server" OnItemDataBound="rptMenu_OnItemBound">
                            <ItemTemplate>
                                <li data-toggle="collapse" data-target='#<%#Eval("Menu_Title") %>' class="collapsed">
                                    <a href='<%#Eval("Menu_UrlRewrite") %>'>
                                        <i class='<%#Eval("Menu_CssFont") %>'></i>
                                        <%#Eval("Menu_Title") %><span class="arrow"></span>
                                    </a>
                                </li>
                                <asp:Literal ID="ltrlSubMenu" runat="server"></asp:Literal>
                            </ItemTemplate>
                        </asp:Repeater>
                    </ul>
                </div>
            </div>

            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
    </form>
</body>
</html>

我还将使用应用程序生成的代码插入一个片段,以显示我的代码发生了什么

<!DOCTYPE html>

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>
    Fearbetweencrowd Official Website
</title><link rel="shortcut icon" type="image/x-icon" href="../../../img/logo_iconaSito.png" />
        
    <style type="text/css">
        .nav-side-menu
        {
            overflow: auto;
            font-family: verdana;
            font-size: 12px;
            font-weight: 200;
            background-color: #2e353d;
            position: fixed;
            top: 0px;
            width: 300px;
            height: 100%;
            color: #e1ffff;
        }
        .nav-side-menu .brand
        {
            background-color: #23282e;
            line-height: 50px;
            display: block;
            text-align: center;
            font-size: 14px;
        }
        .nav-side-menu .toggle-btn
        {
            display: none;
        }
        .nav-side-menu ul, .nav-side-menu li
        {
            list-style: none;
            padding: 0px;
            margin: 0px;
            line-height: 35px;
            cursor: pointer; /*   
.collapsed{
.arrow:before{
            font-family: FontAwesome;
            content: "\f053";
            display: inline-block;
            padding-left:10px;
            padding-right: 10px;
            vertical-align: middle;
            float:right;
    }
}
*/
        }
        .nav-side-menu ul :not(collapsed) .arrow:before, .nav-side-menu li :not(collapsed) .arrow:before
        {
            font-family: FontAwesome;
            content: "\f078";
            display: inline-block;
            padding-left: 10px;
            padding-right: 10px;
            vertical-align: middle;
            float: right;
        }
        .nav-side-menu ul .active, .nav-side-menu li .active
        {
            border-left: 3px solid #d19b3d;
            background-color: #4f5b69;
        }
        .nav-side-menu ul .sub-menu li.active, .nav-side-menu li .sub-menu li.active
        {
            color: #d19b3d;
        }
        .nav-side-menu ul .sub-menu li.active a, .nav-side-menu li .sub-menu li.active a
        {
            color: #d19b3d;
        }
        .nav-side-menu ul .sub-menu li, .nav-side-menu li .sub-menu li
        {
            background-color: #181c20;
            border: none;
            line-height: 28px;
            border-bottom: 1px solid #23282e;
            margin-left: 0px;
        }
        .nav-side-menu ul .sub-menu li:hover, .nav-side-menu li .sub-menu li:hover
        {
            background-color: Orange;
        }
        .nav-side-menu ul .sub-menu li:before, .nav-side-menu li .sub-menu li:before
        {
            font-family: FontAwesome;
            content: "\f105";
            display: inline-block;
            padding-left: 10px;
            padding-right: 10px;
            vertical-align: middle;
        }
        .nav-side-menu li
        {
            padding-left: 0px;
            border-left: 3px solid #2e353d;
            border-bottom: 1px solid #23282e;
        }
        .nav-side-menu li a
        {
            text-decoration: none;
            color: #e1ffff;
        }
        .nav-side-menu li a i
        {
            padding-left: 10px;
            width: 20px;
            padding-right: 20px;
        }
        .nav-side-menu li:hover
        {
            border-left: 3px solid #d19b3d;
            background-color: #4f5b69;
            -webkit-transition: all 1s ease;
            -moz-transition: all 1s ease;
            -o-transition: all 1s ease;
            -ms-transition: all 1s ease;
            transition: all 1s ease;
        }
        @media (max-width: 767px)
        {
            .nav-side-menu
            {
                position: relative;
                width: 100%;
                margin-bottom: 10px;
            }
            .nav-side-menu .toggle-btn
            {
                display: block;
                cursor: pointer;
                position: absolute;
                right: 10px;
                top: 10px;
                z-index: 10 !important;
                padding: 3px;
                background-color: #ffffff;
                color: #000;
                width: 40px;
                text-align: center;
            }
            .brand
            {
                text-align: left !important;
                font-size: 22px;
                padding-left: 20px;
                line-height: 50px !important;
            }
        }
        @media (min-width: 767px)
        {
            .nav-side-menu .menu-list .menu-content
            {
                display: block;
            }
        }
        body
        {
            margin: 0px;
            padding: 0px;
        }
    </style>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" />
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css"rel="stylesheet">
    <link href="https://gitcdn.github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <script src="https://gitcdn.github.io/bootstrap-toggle/2.2.2/js/bootstrap-toggle.min.js"></script>
    
    <script type="text/javascript">
        $(function () {
            $('li[data-toggle="collapse"]').each(function () {
                $(this).i
                if ($(this).next('ul').length == 0) {
                    $(this).removeAttr('data-toggle').removeAttr('data-target').removeClass('collapsed');
                    $(this).find('span.arrow').remove();
                }
            });
            $('ul#menuContent > ul').on('show.bs.collapse', function (e, obj) {
                $("ul#menuContent > ul").not(this).removeClass("in");
                var currentHead = $(this).prev("li");
                $("ul#menuContent > li").not(currentHead).removeClass("active");
                $(currentHead).addClass("active");
            });
        });
    </script>
    
</head>
<body>
    <form method="post" action="./TourModifier.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="ZUgjmhmtBtKTLxWOYW4sJihaVc9bcPoXXRBTjMTRK2LJ4SowfTIsajB2Y19NEfyaJUEkCgQB0AF9cL/fbu8F1z1aNKcaIZE+VXpyuJZ963LG0HcnXlLco/BKSbIQe+pefuqdIdUpmPqjM2ENNn5tTIF6Em078oxQhYeyEsJFtAOMhZL85JjS2rkywJK5TY2UkGQq7V1d3+Adp6QDp46aJQniAgUt3QtfA6N9yo6Ju2QNaFvUC0PCleFu9p9zFcaUBIIXILtY1bwrqKIP5jJagnYZsTZx+hjaBwPaCTHbgaVzjrXTjbmV9Zp448DfyQOC1aAF8UWtc3KmTfaU4NNmtbBzkfrqPDbxa8JlnPoX3+o7cZw0/kwhNEREyUrxaOWlfA1bmlRga1l7fBmuC9HNu3gwdbkXHeSo5+wvvXFIRrUJyajyEypUzOciqIhlLvsv1XJW/3anAnHplDzhZjoRCtzf733Qi8q/KGCpRMj/DXosLHcLG95J2bFDPlF5vhOY" />
</div>

<div class="aspNetHidden">

    <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="4E345808" />
</div>
        
            <div class="nav-side-menu">
                <div class="brand">
                    F.B.C. Reserved Area
                </div>
                <i class="fa fa-bars fa-2x toggle-btn" data-toggle="collapse" data-target="#menuContent" ></i>
                <div class="menu-list">
                    <ul id="menuContent" class="menu-content collapse out">
                        
                                <li data-toggle="collapse" data-target='#Gestione Sito FBC' class="collapsed">
                                    <a href='javascript:;'>
                                        <i class='glyphicon glyphicon-list'></i>
                                        Gestione Sito FBC<span class="arrow"></span>
                                    </a>
                                </li>
                                <ul id='Gestione Sito FBC' class='sub-menu collapse'><li><a href='/TourModifier.aspx'>Tour Modifier</a></li></ul>
                            
                                <li data-toggle="collapse" data-target='#Tour Modifier' class="collapsed">
                                    <a href='/TourModifier.aspx'>
                                        <i class=''></i>
                                        Tour Modifier<span class="arrow"></span>
                                    </a>
                                </li>
                                
                            
                    </ul>
                </div>
            </div>

            

        
    </form>
</body>
</html>

如您所见,当我打开页面并且单击父菜单项“Gestione Sito FBC”时,子项“Tour Modifier”没有隐藏,“Tour Modifier”项没有消失。

谁能帮我找出我的错误在哪里以及如何纠正它们?谢谢。

标签: javascripthtmljquerycsstwitter-bootstrap-3

解决方案


推荐阅读