【发布时间】:2019-08-26 17:18:22
【问题描述】:
我使用了引导导航栏,但是我需要在不同的导航项单击时更改活动类,但是当单击其他导航项时,活动类没有被应用/添加,它保持静态。
部分视图的一些摘录是->
<nav class="navbar navbar-expand navbar-light fixed-top" id="topheader">
<section class="container d-flex">
<span class="navbar-brand mb-0 h1 a">Project Manager</span>
<ul class="navbar-nav mr-auto">
<li class="nav-item active" id="project-nav" onclick= "change2()">
<%= link_to "Project", projects_path, class: "nav-link" %>
</li>
<li class="nav-item" id="user-nav" onclick= "change()">
<%= link_to "user", users_path, class: "nav-link" %>
</li>
</ul>
所以我尝试通过在 application.js 中编写来实现 js,但没有成功
$(".navbar-nav .nav-item").on("click", function(){
$(".navbar-nav").find(".active").removeClass("active");
$(this).addClass("active");
});
我也试过了
function change(){
document.getElementById("project-nav").className.replace(" active", "");
document.getElementById("user-nav").className += " active ";
}
但是类并没有改变——似乎 onclick 事件根本没有被执行
【问题讨论】:
-
你在document.ready函数中添加了点击功能和javascript代码吗?
-
我已经给出了我尝试过的所有相关代码
-
您是否收到任何 JavaScript 错误?如果添加警报,页面加载时是否会看到该警报?您是否通过查看页面源代码并打开 JavaScript 文件来找到您的 JavaScript 代码?在开发者工具 -> 调试器中添加断点会发生什么?
-
你确定在你的 application.js 文件中需要
jquery和jquery-ujs吗?除非您这样做,否则您的第一个示例将不起作用,并将点击侦听器包装在$(document).ready()支票中 -
是的,我有 jquery 和 jquery-ujs
标签: javascript ruby-on-rails ruby-on-rails-5 nav