javascript - 将活动类添加到主页面和子页面
问题描述
我想将该active
类添加到我的导航栏链接。我设法解决了主页上的问题,但是当我转到子页面时,主页不再起作用。
我网站上的网址如下:localhost/project/user/index
和localhost/project/user/edit/1
我的代码适用于第一个索引页面,但不适用于子页面这是代码:编辑:设法找到包含()函数的解决方案并提供元素类。希望看到更好的方法来做到这一点,而不必为每个导航链接指定:
$(document).ready(function() {
var url = window.location.href ;
$('ul.menu a').filter(function() {
if( url.includes('user')) {
$('ul.menu a.user').addClass('active');
} else if (url.includes('team')) {
$('ul.menu a.team').addClass('active');
}
})
});
html:
<ul class="nav menu">
<li class="nav-item">
<a class="nav-link user" href="http://localhost/project/user/index">
</li>
<li class="nav-item">
<a class="nav-link team" href="http://localhost/project/team/index">
</li>
</ul>
谢谢您的帮助!
解决方案
你不发布你的 HTML,所以我在这里猜。但这可能是因为您将绝对 URL ( window.location
) 与相对href
s 进行比较。
假设您生成的 HTML 如下所示:
<nav>
<a href='some-page.html'>
<!-- ... -->
</nav>
您的代码永远不会认为上面的链接是“打开”的,因为您的filter
函数正在将相对值some-page.html
与http://localhost/project/some-page.html
. 这两个字符串不匹配。
正如我所说,这是一种预感,因为您还没有发布您的 HTML,但可能就是这样。
要解决它,您可以执行以下两项操作之一:
- 让您的
filter
回调将绝对 URL 解析window.location
为相对部分,并将其与您的href
- 或者,更简单的是,将绝对而不是相对的 URL 存储在您的 URL 中,
hrefs
这样您就可以将苹果与苹果匹配,而不是苹果与橙子匹配。
推荐阅读
- awk - 使用 awk 和日期获取当前日期
- pine-script - Pine tradingview: 一次,如果直到新事件
- javascript - 如何从 MouseEvent 获取 pointerId 以与 setPointerCapture 一起使用?
- c++ - 在 // C++ 注释中使用 \\ 是否合法?(C++ 注释中的 LaTeX 方程)
- html - Next.js 为模板引擎构建和导出
- excel - 在 2 个时间范围之间对一列中的行求和
- c++ - 如何在 LLVM 中转储 C/C++ 编译单元的类型层次结构
- angularjs - 在 Angular js 应用程序中,如何让其他代码等到某些代码完成?
- reactjs - 如何在 React Native 中的 post request fetch api 调用中传递正文
- paypal - 如何使用信用卡将 ionic 自动付款与 paypal 集成