如何使用jquery切换活动类?

如何使用jquery切换活动类?,jquery,html,bootstrap-4,Jquery,Html,Bootstrap 4,请听我说完。我还不熟悉html和jquery,我知道这个问题已经被问了很多次,但我不知道为什么解决方案不能解决我的问题 当我单击另一个链接时,我希望能够在导航栏中切换活动类。我错过了什么( 这是html <nav class="navbar navbar-expand-lg navbar-light bg-light p-1"> <a class="navbar-brand m-0" href=" /"><img src="" width="281" heigh

请听我说完。我还不熟悉html和jquery,我知道这个问题已经被问了很多次,但我不知道为什么解决方案不能解决我的问题

当我单击另一个链接时,我希望能够在导航栏中切换活动类。我错过了什么(

这是html

<nav class="navbar navbar-expand-lg navbar-light bg-light p-1">
  <a class="navbar-brand m-0" href=" /"><img src="" width="281" height="31.6"></a>
  <button class="navbar-toggler border-0" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse text-dark" id="navbarSupportedContent">
    <ul class="navbar-nav m-auto text-center">
      <li class="nav-item active">
        <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="/blog">Blog</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="/contact">Contact</a>
      </li>

      <li class="nav-item">
        <a class="nav-link" href="/login">Login/Register</a>
      </li>

    </ul>
    <form class="form-inline m-2 my-lg-0" action="/search/">
      <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
      <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
    </form>
  </div>
</nav>

搜寻
我尝试过很多解决方案,包括

<script>
  $('document').on('click', function(){
    $('.navbar .navbar-nav').find('li.active').removeClass( 'active' );
    $(this).addClass( 'active' );
  });
</script>

$('document')。在('click',function()上{
$('.navbar.navbar-nav').find('li.active').removeClass('active');
$(this.addClass('active');
});
试试这个:

$('div#navbarSupportedContent li.nav-item').on('click', function(ev) {
    ev.preventDefault();
    $(this).parent().find('li.active').removeClass('active');
    $(this).addClass('active');
});

您应该在.nav项上附加click事件,而不是整个文档“$(“文档”)。在('click',function()上附加{'点击页面上的任何位置,换句话说,点击页面的任何元素,甚至是表单或他的页面button@EriksKlotins我已经试过了,但仍然不起作用。@MisterJojo感谢您的澄清。您解决了这个问题吗?谢谢。通过这个,活动类将切换,但实际页面不会打开。您刚刚解锁了另一个l混乱程度解锁。lolYes。
ev.preventDefault()
去做吧。如果你离开了服务器端,你会失去一切。一个解决方案是将类设置为活动服务器端?例如,使用php或python?你的网站是如何构造的?你有几个静态页面吗?是的。这是一个django webapp,这是一个包含在base.html文件中的“nav.html”文件。很抱歉,我的回复太晚了h现在继续。嗨,我拿出了
ev.preventDefault();
行,活动类切换,但当页面打开时它会返回到“主页”链接。所以我刚从“主页”链接中删除了
活动类。这不是我想要的工作方式,但总比不切换好。非常感谢。