【问题标题】:How to retain classes that is added via jQuery after fetching all the data via API?通过 API 获取所有数据后,如何保留通过 jQuery 添加的类?
【发布时间】:2021-07-10 19:53:53
【问题描述】:

基本上,我想做的是根据单击的选项卡在导航链接中保留“活动”类。但是,问题在于,由于我从 API(使用节点)获取数据,它会刷新页面并恢复到其原始状态。我一直在研究,找不到答案。请帮忙。

以下是正在发生的事情: https://streamable.com/o1edue

这是我的 HTML/EJS 代码:

<ul class="nav nav-tabs">
  <li class="nav-item test">
    <a
      class="nav-link active"
      id="summer"
      aria-current="page"
      href="/season/2020/summer"
      >Summer</a
    >
  </li>
  <li class="nav-item test">
    <a class="nav-link" id="spring" href="/season/2020/spring">Spring</a>
  </li>
  <li class="nav-item test">
    <a class="nav-link" id="fall" href="/season/2020/fall">Fall</a>
  </li>
  <li class="nav-item test">
    <a class="nav-link" id="winter" href="/season/2020/winter">Winter</a>
  </li>
</ul>

<% for(let i = 0; i< animeSeason.anime.length; i++){ %>
<div class="row test">
  <div class="col-lg-3 col-md-6">
    <div class="card bg-dark text-white card-home">
      <a href="/season/<%= animeSeason.anime[i].title %>">
        <img
          src="<%= animeSeason.anime[i].image_url %>"
          class="card-img"
          alt="..."
        />
        <div class="card-img-overlay">
          <h5 class="card-title card-title-home">
            <%= animeSeason.anime[i].title %>
          </h5>
        </div>
      </a>
    </div>
  </div>
</div>

<% } %>

这是我的 jQuery 代码:

$(".test .nav-link").click(function () {
    $(".test .nav-link").removeClass("active");
    $(this).addClass("active");
});

【问题讨论】:

    标签: javascript jquery node.js bootstrap-4 ejs


    【解决方案1】:

    这是一个客户端javascript(整个页面刷新时)你可以在页面加载时使用.indexOf

    $(() => {
      $('a.nav-link').filter((index , element) => {
        return window.location.href.indexOf($(element).attr('href')) > -1;
      }).addClass('active');
    });
    

    这就是它的工作原理

    var url = "https://mywebsite.com/facebook/anything";  // just for demo don't use it in your code // if you change facebook here with google or twitter it should active its `<a>`
    
    
    $(() => {  //on document ready
      $('a.nav-link').filter((index , element) => {
        var The_href = $(element).attr('href');
        return url.indexOf(The_href) > -1;  // replace url with window.location.href
      }).addClass('active');
    })
    .nav-link{
      background : #eee;
      margin : 5px;
      padding : 5px;
    }
    .nav-link.active{
      background : red;
      color : #fff;
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <a class="nav-link" href="/google/anything">Google</a>
    <a class="nav-link" href="/facebook/anything">facebook</a>
    <a class="nav-link" href="/twitter/anything">twitter</a>

    【讨论】:

    • 您好,我不太明白,但尝试了解决方案,但似乎没有用。 "this.href" 返回 undefined 和 console.log(window.location.href.indexOf(this.href) > -1);返回一个假值。
    • @Mohammed 我在 codeply 中尝试了新的解决方案,但似乎仍然不起作用。 ;_;
    猜你喜欢
    • 1970-01-01
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 2013-10-20
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多