hmahdavi
hmahdavi

Reputation: 2354

Why dropdown dont work in bootstrap5 navbar?

I try to use bootstrap navbar and write below code :

<nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
            <a class="navbar-brand" href="#">Navbar</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarGeneral" aria-controls="navbarGeneral" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>

            <div class="collapse navbar-collapse" id="navbarGeneral">
                
    <ul class="nav navbar-nav">
                <li class="nav-item ">
                        <a href="http://localhost:8080/" class="nav-link">Home 
                        </a>
                    
                </li>
                <li class="nav-item active">
                        <a href="http://localhost:8080/bootstrap5" class="nav-link">bootstrap5 
                        </a>
                    
                </li>
                <li class="nav-item">
                        <a href="http://localhost:8080/home4" class="nav-link">home4 
                        </a>
                    
                </li>
                <li class="nav-item  dropdown">
                        <a href="http://localhost:8080/LoginPage" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" role="button" aria-expanded="false">LoginPage 
                        </a>
                        <ul class="dropdown-menu">
                <li class="nav-item  ">
                        <a href="http://localhost:8080/LoginPage/Bootstrap-34" class="dropdown-item">Bootstrap 3.4 
                        </a>
                    
                </li>
        </ul>

                </li>
        </ul>


            </div>
        </div>
    </nav>

when clicking on the login page get an error that

Uncaught DOMException: Failed to execute 'querySelector' on 'Document': 'http://localhost:8080/LoginPage' is not a valid selector.

What is problem?

Jsfiddle

Upvotes: 2

Views: 5341

Answers (2)

Carol Skelly
Carol Skelly

Reputation: 362430

It's not working to toggle the dropdown because the anchor tag is attempting to navigate. Remove the url from the href...

     <li class="nav-item dropdown">
           <a href="#" class="nav-link dropdown-toggle" 
              data-bs-toggle="dropdown" 
              role="button" aria-expanded="false">LoginPage</a>
           <ul class="dropdown-menu">
               <li class="nav-item ">
                  <a href="http://localhost:8080/LoginPage/Bootstrap-34" class="dropdown-item">Bootstrap</a>
               </li>
           </ul>
     </li>

Note to future readers: Most Bootstrap 5 "dropdown not working" questions are caused by failing to use the new data-bs- attributes

Upvotes: 2

Linear Data Structure
Linear Data Structure

Reputation: 342

Use this and Let me know if it works

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js?cdv=40" type="text/javascript"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css?cdv=40" type="text/css" rel="stylesheet"/>
</head>
<body>
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
        <div class="container-fluid">
            <a class="navbar-brand" href="#">Navbar</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarGeneral" aria-controls="navbarGeneral" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>

            <div class="collapse navbar-collapse" id="navbarGeneral">
                
    <ul class="nav navbar-nav">
                <li class="nav-item ">
                        <a href="http://localhost:8080/" class="nav-link">Home 
                        </a>
                    
                </li>
                <li class="nav-item active">
                        <a href="http://localhost:8080/bootstrap5" class="nav-link">bootstrap5 
                        </a>
                    
                </li>
                <li class="nav-item">
                        <a href="http://localhost:8080/home4" class="nav-link">home4 
                        </a>
                    
                </li>
                <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            LoginPage
          </a>
          <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
            <li><a class="dropdown-item" href="#">Action</a></li>
            <li><a class="dropdown-item" href="#">Another action</a></li>
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="#">Something else here</a></li>
          </ul>
        </li>
        </ul>


            </div>
        </div>
    </nav>
</body>
</html>

Upvotes: 2

Related Questions