gpt4 book ai didi

Javascript 未在 Rails View 部分中执行

转载 作者:行者123 更新时间:2023-12-02 23:04:07 24 4
gpt4 key购买 nike

我使用了 bootstrap navbar ,但是我需要在不同的导航项单击上更改事件类,但是当单击其他导航项时,事件类不会被应用/添加,它保持静态。

部分 View 的一些摘录是->

  <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 事件根本没有被执行

最佳答案

导致该问题的原因是:

<%= link_to "Project", projects_path, class: "nav-link" %>

还有这个:

<%= link_to "user", users_path, class: "nav-link" %>

因此,当您单击nav-item时,它实际上会重定向到projects_pathusers_path,这取决于您选择的链接点击。

这段代码:

$(".navbar-nav .nav-item").on("click", function(){
$(".nav-item").not(this).removeClass('active');
$(this).addClass("active");
});

如果您具有以下代码结构,则可以工作:

<ul class="navbar-nav mr-auto">
<li class="nav-item"> Project </li>
<li class="nav-item" > User </li>
</ul>

因此,如果您只想将 active 类添加到导航栏中的事件链接,您可以这样做:

  1. HTML 文件:
<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">
<%= link_to "Project", projects_path, class: "nav-link" %>
</li>
<li class="nav-item" >
<%= link_to "user", users_path, class: "nav-link" %>
</li>
.....
</ul>
</section>
</nav>
  • 在 JS 文件中:
  • $(document).on("turbolinks:load", function () {
    $('.nav-item a[href="' + this.location.pathname + '"]').parent().addClass('active');
    });

    引用文献:

    How to get Twitter-Bootstrap navigation to show active link?

    https://guides.rubyonrails.org/working_with_javascript_in_rails.html

    关于Javascript 未在 Rails View 部分中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662257/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com