Спадне меню Bootstrap не працює


81

Я не можу змусити спадне меню завантажувача працювати. Ось мій html для nav:

<ul class='nav'>
  <li class='active'>Home</li>
  <li class='dropdown'>
    <a class="dropdown-toggle" data-toggle="dropdown" href='#'>Personal asset loans</a>
    <ul class="dropdown-menu" role="menu">
      <li><a href="#">asds</a></li>
      <li class="divider"></li>
    </ul>
  </li>
  <li>Payday loans</li>
  <li>About</li>
  <li>Contact</li>
</ul>

І ось сценарії:

<script type="text/javascript" src="js/bootstrap/bootstrap-dropdown.js"></script>
<script>
     $(document).ready(function(){
        $('.dropdown-toggle').dropdown()
    });
</script>

Що я роблю не так? Дякую за відповіді!


Перевірте моя відповідь на аналогічний оприбуткування stackoverflow.com/questions/15592158 / ...
Tejasvi Хедж

4
У моїй проблемі не вистачало файлу js bootstrap, на випадок, якщо це допоможе комусь іншому
Drewdavid

Я оновив свій, Gruntfile.jsякий змінює деякі шляхи в jsFileList... Оновлення шляхів та запуск відповідних завдань Grunt (grunt dev / grunt build / etc) вирішило мою проблему.
Ken Prince

1
@Drewdavid Дякую! Я пропав безвісти bootstrap.min.js і jquery
lucidbrot

Відповіді:


11

Робоча демонстрація: http://codebins.com/bin/4ldqp73

спробуйте це

<ul class='nav'>
  <li class='active'>Home</li>
  <li>
    <div class="dropdown">
      <a class="dropdown-toggle" data-toggle="dropdown" href="#">Personal asset loans</a>
      <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">            
        <li><a href="#">asds</a></li>
        <li class="divider"></li>
      </ul>
    </div>   
    </li>
    <li>Payday loans</li>
  <li>About</li>
  <li>Contact</li>
</ul>

57
Здається, спадне меню у вашій демонстрації більше не працює, або, можливо, проблема в моєму браузері.
Ной

153

У мене була та сама проблема. Через пару годин зйомки неприємностей виявили, що

я мав

<script type="text/javascript" src="Scripts/bootstrap.min.js"></script>
<script type="text/javascript" src="Scripts/jquery-2.1.1.min.js"></script>

замість,

<script type="text/javascript" src="Scripts/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="Scripts/bootstrap.min.js"></script>

Сподіваюся, це комусь допомагає


1
Яка різниця?
CodyBugstein

9
Imray, сценарій завантаження реєструє розширення в jQuery, тому, якщо jQUery не завантажується, розширення ніколи не реєструються.
Амоліскі

2
Справді, порядок важливий. Дякую за допомогу!
K.Land_bioinfo

Дякую. Працював також для мого проекту angular 10 у файлі
angular.json

86

У мене була така сама проблема, коли я включив bootstrap.min.jsдвічі. Вилучив одного з них, і він почав працювати.


1
Це вирішило мою проблему. Мій кутовий додаток втягував кілька копій завантажувального файлу через завдання gulp, щоб вводити мої bower_components
Pakage

Це вирішило мою проблему. Подяка
Yudu Ban

це виправлено у проекті ASP.NET MVC 5 з комплектами
Klaasel

Виправив це для мене. Дякую.
Генрі А.

дійсно дратує ... за допомогою aurelia-webpack-skeleton мені потрібно імпортувати bootstrap.css у моєму main.js, але якщо я імпортую 'bootstrap', я отримую таку дивну поведінку ...
іронічно

23

FYI: Якщо у вас є bootstrap.js, ви не повинні додавати самозавантаження-dropdown.js.

Я не впевнений у результаті з bootstrap.min.js.


2
Дякую. У мене були і dropdown.js, і bootstrap.js, і, отже, це не спрацювало. Видалення dropdown.js вирішило проблему.
nyxz

Ви найкращий чоловік, я витратив на це близько 6 годин, щоб знайти, в чому проблема !!, ще раз дякую ..
Адель,

1
Щиро дякую, сер! У мене така сама проблема, але у мене є bootstrap.jsі bootstrap.min.js.. Коли я видалив останню, це працює.

1
Дякую - У моєму випадку я мав і те js/bootstrap.js, і іншеjs/dropdown.js
Санджай Манохар

13

Для вашого стилю вам потрібно включити css-файли bootstrap, як правило, безпосередньо перед цим </head> елементом

<link href="css/bootstrap.css" rel="stylesheet">    

Далі вам потрібно буде включити js-файли, рекомендується включати їх у кінці документа, як правило, перед </body>тим, як сторінки завантажуватимуться швидше.

<script src="js/jquery.js"></script>        
<script src="js/bootstrap.js"></script>

8

Додайте наступні рядки до тегів body.

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
  <script src="https://code.jquery.com/jquery.js"></script>
  <!-- Include all compiled plugins (below), or include individual files 
        as needed -->
  <script src="js/bootstrap.min.js"></script>

Дякую, це заощадило мені трохи часу.
DrewT

7

ви повинні імпортувати ці файли у <head></head>свій html.

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

1
Я не уявляю, чому чи що я робив неправильно, але ця відповідь зробила це для мене. Дякую Мартіне!
dghalbr,

Дякую. Я також не знаю, чому це вирішило проблему. Меню чудово працювало з /js/jquery.js та /js/bootstrap.min.js, доки веб-сайт не перейшов на інший сервер Windows.
Гонг

5

Ви включили jquery.js ?

Також порівняйте цей рядок коду з вашим:

<a class="dropdown-toggle" data-toggle="dropdown" href="#">Personal asset loans<b class="caret"></b></a>

Дивіться цю версію, яка працює нормально.

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Bootstrap dropdown</title>
    <link href="css/bootstrap.css" rel="stylesheet" type="text/css" />

</head>
<body>
    <div class="navbar">
        <div class="navbar-inner">
            <div class="container">
                <ul class="nav">
                    <a class="brand" href="#">w3resource</a>
                    <li class="active"><a href="#">Home</a></li>
                    <li><a href="#">Blog</a></li>
                    <li><a href="#">About</a></li>
                    <li><a href="#">Contact</a></li>
                    <li class="dropdown" id="accountmenu">
                        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Tutorials<b class="caret"></b></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">PHP</a></li>
                            <li><a href="#">MySQL</a></li>
                            <li class="divider"></li>
                            <li><a href="#">JavaScript</a></li>
                            <li><a href="#">HTML5</a></li>
                        </ul>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    <div class="container-fluid">
     <h1>Dropdown Example</h1>
    </div>
    <script type="text/javascript" src="js/jquery-latest.js"></script>
    <script type="text/javascript" src="js/bootstrap.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('.dropdown-toggle').dropdown();
        });
   </script>
</body>
</html>

4

І bootstrap, і jquery повинні бути включені:

<link type="text/css" href="/{ProjectName}/css/ui-lightness/jquery-ui-1.8.18.custom.css" rel="stylesheet" />
<script type="text/javascript" src="/{ProjectName}/js/jquery-x.x.x.custom.min.js"></script>

<link type="text/css" href="/{ProjectName}/css/bootstrap.css" rel="stylesheet" />
<script type="text/javascript" src="/{ProjectName}/js/bootstrap.js"></script>

ПРИМІТКА: версія jquery-xxxmin.js повинна бути версії 2.xx !!!


4

Я зрозумів це, і найпростіший спосіб зробити це - просто скопіювати та пропустити CDN посилання для завантаження, яке можна знайти на https://www.bootstrapcdn.com/ та сценарії CDN Jquery, які можна знайти тут https: // code.jquery.com/ і після того, як ви скопіюєте посилання, посилання завантажувальної стрічки вставляють в заголовок HTML і вставляють Jquery Script в тіло HTML, як приклад нижче:

    <!DOCTYPE html>
    <html>
      <head>

        <title>Purrfect Match Landing Page</title>
        <!-- Latest compiled and minified CSS -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <!--<link rel="stylesheet" href="griddemo.css">

        <!-- Optional theme -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css">
        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">

      </head>

      <body>

        <!-- Latest compiled and minified JavaScript -->
        <script src="https://code.jquery.com/jquery-3.1.1.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js">      </script>    
      </body>
    </html>

Для мене працює ідеальна надія, це працює і для вас :)


Дякую ! , переміщаючи його до того, як </body>теги змусили його працювати на моєму кінці!
Райан Акіно,

2

Спробуйте це в головному розділі

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">

2

Ось що я зробив - це .....

Просто видалив bootstrap.min.js з мого проекту та додав до нього bootstrap.js, і він почав працювати ........

bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                  "~/Scripts/bootstrap.js"
                  //"~/Scripts/bootstrap.min.js"));

Додавання до #kubilay Відповідь: ви можете мати по одному класу з назвою 'A' для кожного документа. .min.css / .min.js - це, як правило, ті самі файли css та js, у яких видалено всі пробіли. Це робить їх меншими та швидшими. Браузер все одно не потребуватиме пробілів.
Мохіт Даван

Видаліть одного, якщо використовували обидва
Мохіт Даван

2

Спробуйте цей код:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Bootstrap Tutorial</title>
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
    <h1>Welcome to Bootstrap</h1>
    <div class="dropdown">
        <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            Dropdown button
        </button>
        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
        </div>
    </div>


    <script src="https://code.jquery.com/jquery.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</body>
</html>

1

Вам доведеться перевірити конфліктуючі файли css / властивості, наприклад, ви могли б мати вміст нетипового стилю ".nav" в іншому місці, спробувати вимкнути власні файли css і перевірити, чи це працює, а потім перевірити, який файл або власний стиль, що робить конфлікти, також ви включаєте bootstrap.min.js у свій код


1

У мене була аналогічна проблема тільки спостерігати , що я додав скрипт початкового завантаження в два рази , а другий скрипт початкового завантаження був після того, як над сценарієм Jquery.

Рішення:

  • Переконайтеся, що bootstrap.min.js та jquery.min.js включені у ваш файл лише один раз.
  • Сценарій bootstrap.min.js повинен бути включений після jquery.min.js

1

Скопіюйте та вставте нижче jQuery <script>та таблицю стилів <link>у свій файл, <head>щоб переконатися, що ви завантажуєте всі необхідні файли.

Важливо, щоб ваш .jsфайл JQuery знаходився над .cssтаблицею стилів

Просто вставте наступний рядок для тестування

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//netdna.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="//netdna.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">

Проблема виникає здебільшого із завантаженням сценарію jQuery, переконайтесь, що ви правильно додали посилання.

Тепер випробуй

Однак якщо це не працює, перевірте веб-сайт bootstrap, там є зразок реалізації.

https://getbootstrap.com/docs/4.3/components/navbar/#supported-content


1

Для останньої Bootstrap вам знадобиться Popper.js

<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>

Скопіюйте посилання в розділі Кінець тіла безпосередньо перед <body>тегом, всередині <Head>тегу.


1

Я щойно додав JSчастину bootstrapна свою сторінку індексу, тоді це спрацювало

Вставте це, якщо ви використовуєте останню версію bootstrap

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>

Це 8-річне запитання з прийнятою відповіддю ...
Zsolt Meszaros

@ZsoltMeszaros Так, я знаю. Але є й інші люди, які можуть зіткнутися з цією проблемою
мекдеальність

0

У мене була та сама проблема, яка привела мене сюди.

Моя проблема: Я використовував рекомендовану версію jquery 1.12.0 як свій файл сценарію jquery.

Рішення: замінено сценарій jquery на версію jquery 2.2.0.

Це вирішило це для мене.


0

Для мене це було питання CORS. Я видалив crossorigin="anonymous"зі свого сценарію імпорт тегів, і він знову почав працювати.

До речі, найновіші теги скриптів у правильному порядку завжди можна знайти тут: https://getbootstrap.com/

Редагувати: мабуть, додавання deferдо scriptтегу також призведе до пошкодження всіх смайлів Bootstrap.


0

Копіювати / вставити посилання CSS з наступним посиланням JS з сайту початкового завантаження тут . Тоді випадаюче меню має спрацювати.

Моя сторінка виглядає так:

<html>
  <head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>

    <title>Website Title</title>
  </head>
  <body>
    <div id="content" />
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="#">Navbar</a>
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
      </button>
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav mr-auto">
          <li class="nav-item active">
            <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
          </li>
          <li class="nav-item">
            <a class="nav-link" href="#">Link</a>
          </li>
          <li class="nav-item dropdown">
            <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
              Dropdown
            </a>
            <div class="dropdown-menu" aria-labelledby="navbarDropdown">
              <a class="dropdown-item" href="#">Action</a>
              <a class="dropdown-item" href="#">Another action</a>
              <div class="dropdown-divider"></div>
              <a class="dropdown-item" href="#">Something else here</a>
            </div>
          </li>
          <li class="nav-item">
            <a class="nav-link disabled" href="#">Disabled</a>
          </li>
        </ul>
        <form class="form-inline my-2 my-lg-0">
          <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
          <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
        </form>
      </div>
    </nav>
  </body>
</html>

(Навбар звідси )


0

Перевірте бібліотеку popper.js, оскільки у мене була така сама проблема, ви можете знайти завантажувальні CDN, jquery та popper CDN для випадаючого списку на https://getbootstrap.com/ або jus скопіюйте наступні теги сценарію


0

Моя (та сама) проблема виникла, коли я змішав версії css та bootstrap. Я використовував версію 3 bootstrap.min.js з версією 4.5 bootstrap.min.css

Якщо ви нещодавно завантажили чи переписали купу файлів css та js у свою статичну папку, було б гарним місцем для початку.

Удачі.


-1

Я налаштував Angular 7, jQuery 3.4.1, Popper 1.12.9 і Bootstrap 4.3.1, у мене нічого не працювало, я зробив цей невеликий злам у стилях:

.dropdown.show .dropdown-menu {
    opacity: 1 !important;
}

Html виглядає так:

<nav class="navbar navbar-expand-lg navbar-dark fixed-top py-1">
 <div class="container-fluid">
    <ul class="navbar-nav">
        <li class="nav-item dropdown">
            <button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" id="dropdown-id"
                aria-expanded="false">Menu</button>
            <div class="dropdown-menu" aria-labelledby="dropdown-id">
                <a class="dropdown-item" [routerLink]='["/"]'>Main page</a>
                <a class="dropdown-item" [routerLink]='["/about"]'>About</a>
                <div class="dropdown-divider"></div>
                <a class="dropdown-item" [routerLink]='["/about/terms"]'>Terms</a>
                <a class="dropdown-item" [routerLink]='["/about/privacy"]'>Privacy</a>
            </div>
        </li>
     </ul>
  </div>
</nav>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.