javascript - 突出显示当前菜单项?
问题描述
所以基本上我试图给一个“当前”类来突出显示当前页面的菜单项。我已经尝试了我在这个网站上看到的几个片段,但大多数都不起作用。这段代码几乎对我有用,但问题是虽然当前菜单项正确突出显示,但无论我正在查看哪个页面,主页按钮也会突出显示。因此,就像我正在查看“存档”页面一样,存档和主页都会突出显示。
顺便说一句,我正在使用 Wordpress 构建网站,我知道 Wordpress 支持这种效果,但我想在没有它的情况下实现这一点。
HTML
<ul class="navigation">
<li><a href="<?php echo home_url() ?>" class="navItem">Home</a></li>
<li><a href="<?php echo home_url(/archive) ?>" class="navItem">Archive</a></li>
<li><a href="<?php echo home_url(/about) ?>" class="navItem">About</a></li>
</ul>
JS
jQuery(function($) {
$('.navigation li a').each(function() {
var target = $(this).attr('href');
if(location.href.match(target)) {
$(this).addClass('current');
} else {
$(this).removeClass('current');
}
});
});
我对javascript不太熟悉,所以可能会有一些错误。
感谢您阅读本文,祝您新年快乐。
解决方案
的建议wp_nav_menu
是 WordPress 中的正确方法,但如果您只是在寻找快速解决方案并且菜单不会经常更改,您可以在每个列表项中进行检查。
<ul class="navigation">
<li><a href="<?php echo home_url() ?>" class="navItem <?php if( is_front_page() ): echo 'current'; endif; ?>">Home</a></li>
<li><a href="<?php echo home_url(/archive) ?>" class="navItem <?php if( is_home() || is_archive() || is_single() ): echo 'current'; endif; ?>">Archive</a></li>
<li><a href="<?php echo home_url(/about) ?>" class="navItem <?php if( is_page('About') ): echo 'current'; endif; ?>">About</a></li>
</ul>
这利用了WordPress 的“条件标签”,它有效地返回给定页面的“真”或“假”。请注意,第二个链接检查多个博客/帖子条件(假设这是针对博客的)。
推荐阅读
- spring - 如何在 @PreAuthorize 中使用 Autowired 服务
- java - 从历史 sqlite 中存储的数据中花费在每个 chrome 选项卡/网站上的时间
- sql - 按数据分组,同一组多次出现
- typescript - Typeorm 装饰器不是函数
- typescript - 如果周末循环访问日期和 Console.log?以 VBA 为例
- kubernetes - 连接到 Mosquitto pod 的 Kubernetes 内部 pod
- amazon-web-services - 如何跨 lamdas 共享配置对象?
- grep - 如何在匹配的行中grep仍然未知的特定单词
- python - 铁路预订系统 - 保留可用座位数
- css - 如何在 VueJS 中平滑过渡动画