0

在搜索问题和回复后,我仍然无法让导航栏在当前页面上添加“活动”类。

$(document).ready(function () {
    $(".nav-link").on("click", function(){
        $(".nav-link").find(".active").removeClass("active");
        $(this).parent().addClass("active");
  });
});

我确实看到添加了该类,并且当新页面加载时该类消失了..?? 我无法理解这个 jquery。

我发现的解决方法是提供变量

<?php pageID = "index"; ?>在每个页面和各自的“导航链接”中都有一个类

<?php echo(pageID=="index") ? "active" : "" ?>

顺便说一句,导航栏代码在每个页面上加载的 header.php 中include('header.php');

寻找有关如何使用 jquery 而不是解决方法的指导

4

1 回答 1

0

实际上,您的解决方法是实现此目的的典型方法。Javascript 不会保留它通过您的导航所做的更改。要实现想要在 JS 中做的事情,您可能想要使用localStorage

/* Sample code */
localStorage.setItem('activeMenu', 'blog');
$(function(){
  if (localStorage.getItem('activeMenu') === 'blog') {
    $('#blogNavLink').addClass('active');
  }
}

如果您想在 PHP 中执行此操作,您可能会使用 PHP 变量或包含选择器的隐藏输入并在 JS 中使用它。

$activeMenu = 'blog';
<input type="hidden" id="menuItem" value="<?= $activeMenu ?>">
$(function(){
  if ($('#menuItem').val() === 'blog') {
    $('#blogNavLink').addClass('active');
  }
}
于 2020-01-29T08:57:48.273 回答