【问题标题】:Bootstrap 5 Dropdown & Navs: Cannot read property 'children' of nullBootstrap 5 下拉菜单和导航:无法读取 null 的属性“孩子”
【发布时间】:2021-08-03 13:14:01
【问题描述】:

当我尝试在导航栏组件中使用带有导航选项卡的下拉按钮时,我收到此 Dev Console 错误消息“无法读取属性 'children of null”。

当我单击下拉项以在导航栏中显示导航链接时,我收到此开发控制台错误消息“无法读取属性 'children of null”

现场示例: https://codepen.io/themes4all/pen/bGWjMzZ

HTML:

<nav class="navbar navbar-expand-lg navbar-light bg-light py-3">
    <div class="container-fluid">
        <div class="row align-items-center">
            <div class="col">
                <div id="nav-tab" class="dropdown" role="tablist">
                    <button type="button" id="dropdownEx" class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Select Item</button>
                    <ul class="dropdown-menu" aria-labelledby="dropdownEx">
                        <li>
                            <button type="button" role="tab" id="nav-example-1-tab" class="dropdown-item active" data-bs-toggle="tab" data-bs-target="#nav-example-1" aria-controls="nav-example-1" aria-selected="true">
                                Example 01
                            </button>
                        </li>
                        <li>
                            <button type="button" role="tab" id="nav-example-2-tab" class="dropdown-item" data-bs-toggle="tab" data-bs-target="#nav-example-2" aria-controls="nav-example-2" aria-selected="false">
                                Example 02
                            </button>
                        </li>
                    </ul>
                </div>
            </div>
            <div class="col">
                <div class="tab-content">
                    <div role="tabpanel" id="nav-example-1" class="tab-pane fade show active" aria-labelledby="nav-example-1-tab">
                        <ul class="navbar-nav">
                            <li class="nav-item dropdown">
                                <a href="#" role="button" id="navbarDropdown" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Example 01</a>
                                <ul class="dropdown-menu" aria-labelledby="navbarDropdown"></ul>
                            </li>
                        </ul>
                    </div>
                    <div role="tabpanel" id="nav-example-2" class="tab-pane fade" aria-labelledby="nav-example-2-tab">
                        <ul class="navbar-nav">
                            <li class="nav-item dropdown">
                                <a href="#" role="button" id="navbarDropdown2" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Example 02</a>
                                <ul class="dropdown-menu" aria-labelledby="navbarDropdown2"></ul>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>
</nav>

【问题讨论】:

    标签: javascript html dropdown bootstrap-5


    【解决方案1】:

    标签 (data-bs-toggle="tab") 应该包含在 nav nav-tabs...

    <nav class="navbar navbar-expand-lg navbar-light bg-light py-3">
        <div class="container-fluid">
            <div class="row align-items-center">
                <div class="col">
                    <div id="nav-tab" class="dropdown" role="tablist">
                        <button type="button" id="dropdownEx" class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Select Item</button>
                        <ul class="dropdown-menu nav nav-tabs" aria-labelledby="dropdownEx">
                            <li class="dropdown-item p-0">
                                <button type="button" role="tab" id="nav-example-1-tab" class="dropdown-item active" data-bs-toggle="tab" data-bs-target="#nav-example-1" aria-controls="nav-example-1" aria-selected="true"> Example 01 </button>
                            </li>
                            <li class="dropdown-item p-0">
                                <button type="button" role="tab" id="nav-example-2-tab" class="dropdown-item" data-bs-toggle="tab" data-bs-target="#nav-example-2" aria-controls="nav-example-2" aria-selected="false"> Example 02 </button>
                            </li>
                        </ul>
                    </div>
                </div>
                <div class="col">
                    <div class="tab-content">
                        <div role="tabpanel" id="nav-example-1" class="tab-pane fade show active" aria-labelledby="nav-example-1-tab">
                            <ul class="navbar-nav">
                                <li class="nav-item dropdown">
                                    <a href="#" role="button" id="navbarDropdown" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Example 01</a>
                                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown"></ul>
                                </li>
                            </ul>
                        </div>
                        <div role="tabpanel" id="nav-example-2" class="tab-pane fade" aria-labelledby="nav-example-2-tab">
                            <ul class="navbar-nav">
                                <li class="nav-item dropdown">
                                    <a href="#" role="button" id="navbarDropdown2" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Example 02</a>
                                    <ul class="dropdown-menu" aria-labelledby="navbarDropdown2"></ul>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </nav>
    

    Demo

    警告:这不是引导选项卡和下拉菜单的预期用途。下拉菜单不是用来切换选项卡的,而且选项卡也不是用来在导航栏中使用的。

    【讨论】:

    • 下拉菜单不关闭它应该仍然切换
    • 整件事都不是 Tabs 的预期用途。作为一种解决方法/hack,您可以使用dropdown-menu collapse
    • 我不是在寻找折叠我正在尝试根据下拉按钮活动项目显示导航栏项目
    • 再一次,您没有按预期使用 Bootstrap - 另一个 XY 问题?使用折叠类是一种解决方法。查看演示。
    • 有什么想法可以实现我想要的吗?
    【解决方案2】:

    这并没有描述为什么会发生,但如果你想要一个解决方案。

    删除与下拉列表项按钮相关的一些属性(例如,见下文)。根据您想要执行的操作,您可以为这些按钮设置 JavaScript 事件侦听器。或者您可以将按钮更改为锚标记并导航到不同的页面。

    <div id="nav-tab" class="dropdown" role="tablist">
        <button type="button" id="dropdownEx" class="btn btn-dark dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">Select Item</button>
        <ul class="dropdown-menu" aria-labelledby="dropdownEx">
            <li>
                <button type="button" role="tab" id="nav-example-1-tab" class="dropdown-item active">
                    Example 01
                </button>
            </li>
            <li>
                <button type="button" role="tab" id="nav-example-2-tab" class="dropdown-item">
                    Example 02
                </button>
            </li>
        </ul>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-20
      • 2017-06-10
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多