Div 折叠点击 Body 时保持显示

问题描述 投票:0回答:1
javascript jquery bootstrap-5
1个回答
0
投票

您需要检查折叠是否已显示,然后相应地进行切换。

下面是相同的代码:-

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bootstrap Collapse Example</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
    <style>
        .body-menu-report-nav {
            font-size: 14px;
            background-color: #080a70;
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            width: 180px;
            transition: none;
            color: #fff;
            z-index: 10;
            align-items: stretch;
            box-shadow: -5px 0px 10px 1px #c7c7c7;
        }
    </style>
</head>
<body>
    <a class="btn btn-tocanvas-report" href="#" id="btnOpenSidebarListMenuReport" role="button" aria-controls="listMenuReport">
        <span><i class="bi bi-list"></i>Open List Report</span>
    </a>

    <div class="collapse body-menu-report-nav" id="listMenuReport">
        <ul class="ul-menu-report-nav">
            <li class="li-menu-report-nav">
                <a href="index.php?page=report&report=curloc_report" class="navbar-listmenureport-link">
                    <i class="bi bi-geo"></i>
                    <span>Current Location</span>
                </a>
            </li>
        </ul>
    </div>

    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.bundle.min.js"></script>
    <script>
        const listMenuReport = document.getElementById("listMenuReport"); // Declare div collapse
        const btnOpenSidebarListMenuReport = document.getElementById("btnOpenSidebarListMenuReport"); // Declare the button to trigger Open/Close div Collapse

        btnOpenSidebarListMenuReport.addEventListener('click', (e) => {
            e.preventDefault();
            var bsCollapse = new bootstrap.Collapse(listMenuReport, {
                toggle: false
            });
            if (listMenuReport.classList.contains('show')) {
                bsCollapse.hide();
            } else {
                bsCollapse.show();
            }
        });

        // Click Outside Sidebar will Close Collapse
        window.addEventListener('click', (e) => {
            if (!listMenuReport.contains(e.target) && e.target !== btnOpenSidebarListMenuReport) {
                var bsCollapse = new bootstrap.Collapse(listMenuReport, {
                    toggle: false
                });
                bsCollapse.hide();
            }
        });

        // Click Inside Sidebar, Sidebar will not Close
        listMenuReport.addEventListener('click', (e) => {
            e.stopPropagation();
        });
    </script>
</body>
</html>

© www.soinside.com 2019 - 2024. All rights reserved.