我有bootstrap v3 .
我在 navbar
上使用 class="active"
,当我按下菜单项时它不会切换 . 我知道如何用 jQuery
做这个并构建一个单击函数,但我认为这个功能应该包含在bootstrap中?那么也许这是一个JavaScript问题?
这是我的头文件,包含我的js / css / bootstrap文件:
<!-- Bootstrap CSS -->
<link rel="stylesheet" href= "/bootstrap/css/bootstrap.css" />
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<link rel="stylesheet" href= "/stylesheets/styles.css" />
<!--jQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<!-- Bootstrap JS -->
<script src="/bootstrap/js/bootstrap.min.js"></script>
<script src="/bootstrap/js/bootstrap-collapse.js"></script>
<script src="/bootstrap/js/bootstrap-transition.js"></script>
这是我的 navbar
代码:
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbarCollapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/index.php">MyBrand</a>
</div>
<div class="collapse navbar-collapse navbarCollapse">
<ul class="nav navbar-nav navbar-right">
<li class="active">
<a href="/index.php">Home</a>
</li>
<li>
<a href="/index2.php"> Links</a>
</li>
<li>
<a href="/history.php">About</a>
</li>
<li>
<a href="/contact.php">Contact</a>
</li>
<li>
<a href="/login.php">Login</a>
</li>
</ul>
</div>
</div>
</nav>
我这样做了吗?
(在一个不相关的注释,但可能相关?当菜单移动时,我点击菜单按钮,它崩溃 . 再次推它不会崩溃它 . 所以这个问题,与另一个,都表示错误的JavaScript设置也许?)
19 回答
对于bootstrap移动菜单单击项目后解除折叠,您可以使用此功能
您已经包含了缩小的Bootstrap js文件和折叠/转换插件,而文档说明:
和
这对于最小化问题很可能是你的问题 .
对于活动类,您必须自己管理它,但它只是一两行 .
Bootstrap 3:
Bootply:http://www.bootply.com/IsRfOyf0f9
Bootstrap 4:
这是我切换活动页面的解决方案
使用版本3.3.4的bootstrap,在长html页面上,您可以参考pg的各个部分 . 通过class或id来管理带有spy-scroll和body元素的活动导航栏链接:
数据目标将是一个div,其id =“spy-scroll-id”
这应该通过点击而不需要任何javascript函数来激活链接,并且当你滚动浏览页面的相应链接部分时js onclick()将不会自动激活每个链接 .
这对我来说是完美的,因为“window.location.pathname”也包含真实页面名称之前的数据,例如:目录/ page.php文件 . 因此,如果网址包含此链接,则实际的导航栏链接将仅设置为活动状态 .
如果您不使用锚链接,可以使用以下内容:
您只需将 data-toggle="tab" 添加到bootstrap导航栏中的链接,如下所示:
使用Bootstrap 4,您可以使用:
这个优雅的解决方案为我做了诀窍 . 欢迎任何新的想法/建议 .
您可以使用jQuery的“siblings()”方法来仅保持所访问的项目处于活动状态,并使其兄弟处于非活动状态 .
今天我一直在努力解决这个问题,只有在单页应用程序上才能使用数据转换功能 .
我没有使用ajax来加载我实际上正在为其他页面发布请求的内容,所以第一个js脚本也没用 . 我用这句话解决了这个问题:
我希望这有助于解决这个问题 .
我对此有些痛苦,使用动态生成的列表项 - WordPress Stack .
添加了这个,它工作:
会在飞行中做到这一点 .
“活动”类不是使用bootstrap开箱即用的 . 在您使用PHP的情况下,您可以看到:
How add class='active' to html menu with php
为您提供一种主要使其自动化的方法 .
我使用bootstrap裸主题,这是示例导航条代码 . 请注意元素的类名 - > .nav - 因为这是在java脚本中引用的 .
在视图页面(或部分)中添加:javascript,这需要在每次加载页面时执行 .
haml view snippet - >
在javascript调试器中,确保'href'属性的值与window.location.pathname匹配 . 这与@Zitrax的解决方案略有不同,后者帮助我解决了我的问题 .
对于 AngularJS ,您可以使用
ng-class
这样的函数:HTML - >
和控制器
如果您使用的是$ location,那么就不会有哈希值 . 所以你可以使用$location从URL中提取所需的字符串
以下将不适用于所有情况 - >
使用像下面这样的范围变量仅在单击时才起作用,但如果使用
$state.transitionTo
或window.location完成转换或手动更新URL,则Tab值将不会更新Add this JavaScript on your main js file.
一世不得不前进一步,因为我的文件名与我的导航栏 Headers 不一样 . 即我的第一个导航栏链接是HOME但文件名是索引..
所以只需获取路径名并匹配即可 .
显然,这是一个粗略的例子,可能更有效,但它是高度定制的需求 .
Bootstrap 4解决方案对我有用:
这仅在 href 包含 location.pathname 时才有效!
如果你在自己的电脑上测试你的网站(使用wamp,xampp,lamp等等)并且你的网站位于某个子文件夹中,那么你的路径实际上是“/somefolder/something.php”,所以不要得到困惑 .
我建议如果你不确定使用下面的代码,那么你可以确定什么是正确的 location.pathname :
下一个答案是针对那些拥有多级菜单的人: