Javascript 在rails中单击li元素时无法更改其类别

Javascript 在rails中单击li元素时无法更改其类别,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我目前已在application.html.erb中包含以下内容 <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'customjsFile', 'data-turbolinks-track' => true %> 但是单击'li'元素时,它不会被重定向到'a'标记的'href' 我尝试将以下代

我目前已在application.html.erb中包含以下内容

  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'customjsFile', 'data-turbolinks-track' => true  %>
但是单击'li'元素时,它不会被重定向到'a'标记的'href' 我尝试将以下代码添加到customjsFile.js

$(document).on("click", "a", function(){
    window.location.href = $(this).attr('href');

});

但随后我被重定向到单击的“a”元素的“href”,但我的活动类没有更改为单击的“li”,而是保持不变

您应该收听
页面:更改事件,因为您正在使用TurboLink:

$(document).on('page:change', function () {
  $('.nav li a').click(function(e) {
    ...
执行此操作时:
$('.nav li').removeClass('active'),这意味着您选择了所有类名为
nav
且包含
  • 的元素,并从中删除了类名
    活动的

    我想您需要的是仅从当前单击的元素中删除类名
    active
    ,然后使用
    $(this)

    注意:不要忘记防止锚的默认行为。我认为你的
    li
    元素除了
    active
    之外应该有一个初始类名。请尝试阅读
    .toggleClass()

    $(document).on("click", "a", function(){
        window.location.href = $(this).attr('href');
    
    });
    
    $(document).on('page:change', function () {
      $('.nav li a').click(function(e) {
        ...
    
     $(document).ready(function () {
            $('.nav li a').click(function(e) {
                e.preventDefault();
                var $parent = $(this).parent();
                $parent.removeClass('active');
    
    });