【问题标题】:BootStrap 4 does not set the Active Page on the NavbarBootStrap 4 未在导航栏上设置活动页面
【发布时间】:2020-01-29 08:26:37
【问题描述】:

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

$(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 而不是解决方法的指导

【问题讨论】:

  • 显示对应的html代码
  • 为什么当你重新加载页面时类会持续存在?页面加载时需要使用php或JS设置活动类(目前只在点击时进行)
  • 你最好添加有问题的 html 导航栏代码

标签: php jquery nav


【解决方案1】:

实际上,您的解决方法是实现此目的的典型方法。 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');
  }
}

【讨论】:

  • localStorage 选项在用户第一次访问该站点时不起作用(不会有任何活动,因为 localStorage 中不会有任何内容)
猜你喜欢
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多