javascript - 在菜单中选择当前链接
问题描述
我正在为我的网站使用 MentisMenu,并且正在尝试将活动菜单选择设置为活动状态。我可以让菜单和子菜单激活和展开,但实际选择的链接不会被标记为活动的。任何人?
const currentLinkParents = currentLink => {
let target = currentLink
let parent = []
while (target) {
// Get only nav-link
if (target.classList.contains('nav-item')) parent.unshift(target.querySelector('.nav-link'))
// Stop on treeview
if (target.classList.contains('treeview')) break
target = target.parentNode
}
return parent
}
const updateMenu = currentLink => {
document.querySelectorAll('#menu .active').forEach(i => i.classList.remove('active', 'show'))
for (const i of currentLinkParents(currentLink)) {
i.classList.add('active')
i.classList.contains('treeview-toggle') && i.classList.add('show')
}
}
updateMenu(document.querySelector(`#menu a[href="${window.location.pathname.split('/').pop()}"]`))
此处的示例 HTML:
<li class="nav-item">
<a class="nav-link has-icon treeview-toggle" href="#"><i class="material-icons">construction</i>Engineering</a>
<ul class="nav">
<li><a href="renovations_active.aspx" class="nav-link">Active Renovations</a></li>
<li><a href="maintenance_requests.aspx" class="nav-link">Maintenance Requests</a></li>
<li><a href="projects.aspx" class="nav-link">Projects</a></li>
<li><a href="unit_recurring_events.aspx" class="nav-link">Recurring Events</a></li>
<li class="nav-item">
<a href="javascript:void(0)" class="nav-link treeview-toggle">Inventories</a>
<ul class="nav">
<li><a href="inventory_management.aspx" class="nav-link">Stock Inventory</a></li>
<li><a href="key_inventory.aspx" class="nav-link">Master Keys</a></li>
</ul>
</li>
</ul>
</li>
在这个例子中,如果我选择“Master Keys”,那么菜单 Engineering 和 Inventories 都会展开并设置为活动状态,但 Master Keys 选项没有标记为活动状态。
希望有人能帮忙!
解决方案
在调用 updateMenu() 修复它后,结果如下:
document.querySelector( #menu a[href="${window.location.pathname.split('/').pop()}"]
).classList.add('active');
推荐阅读
- jestjs - 笑话:模拟 observable 和模板
- angular - 两个角度分量之间的通信
- cassandra - Cassandra 服务未在 EC2 上运行
- java - 如何使用java使用foreach循环将用户列表保存到数据库
- c - 所有系统错误的数量
- assembly - 在 MIPS 中查找数组中的最大元素
- android-jetpack-compose - 如何使用jetpack compose为ConstraintLayout提及dimensionRation?
- python - 蒙特卡洛高斯函数
- javascript - 在每个级别生成聚合直到父级
- python - pyqt 没有显示我的进度条,但它需要时间来完成它