Bootstrap 3下拉菜单无法使用

10

我不太明白,当我在本地打开我的HTML页面时,下拉菜单无法工作。

我尝试将我的HTML代码复制/粘贴到Bootply上,它可以工作!真是难以置信...

http://bootply.com/90610

有什么想法吗?

我不想包含所有JS文件,只需要下拉菜单所需的文件(dropdown.js)。

我真的不知道我应该尝试什么...

如果有人能帮助我,我会非常感激。

谢谢


你有检查控制台是否有错误吗? - 412
控制台有任何错误吗? - Langusten Gustel
Firebug控制台错误: TypeError:$未定义index.html(第11行) ReferenceError:$未定义$('.dropdown-toggle').dropdown() - insidelulz
3个回答

23

在将此内容放入您自己的HTML页面中时,必须包含jQuery 1.X或2.X(Bootstrap版本3.3.7之前与JQuery 3.X不兼容)。请确保在bootstrap.js(或dropdown.js)之前包含jquery.js文件。通常是在</body>标签之前进行此操作。

这是一个完整的工作示例,Bootstrap和jQuery从外部CDN加载:

<html>
<head>
    <title>Example</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Bootstrap -->
    <link href="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet">

</head>
<body>

<!-- Static navbar -->
<div class="navbar navbar-default navbar-static-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
        </div>
        <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">Home</a></li>
                <li><a href="#about">About</a></li>
                <li><a href="#contact">Contact</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown <b class="caret"></b></a>
                    <ul class="dropdown-menu">
                        <li><a href="#">Action</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li class="divider"></li>
                        <li class="dropdown-header">Nav header</li>
                        <li><a href="#">Separated link</a></li>
                        <li><a href="#">One more separated link</a></li>
                    </ul>
                </li>
            </ul>

        </div>
        <!--/.nav-collapse -->
    </div>
</div>

<!-- include javascript, jQuery FIRST -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
</body>

</html>
将此内容放入 .html 文件中并在浏览器中打开。

我不想添加完整的jQuery文件,它很重,而且并不是真正“安全”的。 在jQuery中用哪个函数来制作下拉菜单? - insidelulz
jQuery既轻量又安全。你所说的“不安全”是什么意思?我不知道jQuery的哪些部分用于下拉菜单,我想这需要深入研究bootstrap.js和jquery.js才能弄清楚 ;) - Martin Preusse
提醒读者:Bootstrap 3.X 不兼容 JQuery3.X。您需要链接到JQuery 2.X或1.X。在此处查看 - TolkienWASP

2
我来翻译一下:

我是这样让它工作的:

首先运行以下命令:

npm install --save bootstrap@3

这将为CSS和JS创建所有Bootstrap目录。

然后,我在我的项目/projectname/angular.json中全局添加了以下内容:

添加以下行以添加CSS和JS:

 "styles": [
          "node_modules/bootstrap/dist/css/bootstrap.min.css",
          "src/styles.css"
        ],
        "scripts": [
          "node_modules/bootstrap/dist/js/bootstrap.min.js",
          "node_modules/bootstrap/dist/js/npm.js"
        ]

请确保您的index.html文件没有直接导入任何冲突的.js文件。


谢谢。这是唯一一个真正帮助我并使其再次工作的答案 - 就是在导入bootstrap.js之后导入npm.js。 - Wojciech Zylinski

0

对我来说,以上所有方法都没有解决问题。 升级到Bootstrap的v3.2.0版本就解决了问题。以下是一个自包含的示例代码。只需将其复制粘贴到测试HTML文件中,它应该可以工作(所有JS和CSS都是CDN加载的):

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js">    </script>
    <link rel="stylesheet" href="//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>


</head>
<body>

<div class="btn-group"> 
  <button id="myid" type="button" class="btn btn-default dropdown-toggle" data-    toggle="dropdown">
    Action <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li class="divider"></li>
    <li><a href="#">Separated link</a></li>
  </ul>
</div>
</body>
</html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接