本文介绍如何在页面初次加载(含带 hash 的 url)和后续 hash 变更时,均能正确触发 `.addclass('op
en')`,确保锚点链接直达的团队成员内容区域即时高亮显示。
在使用 URL hash 实现单页内锚点导航(如团队成员列表)时,一个常见痛点是:仅监听 hashchange 事件无法覆盖「用户直接访问带 hash 的 URL」(例如 https://example.com/members#anchorX)这一场景——因为此时页面尚未触发 hash 变化,hashchange 不会被触发。
解决方案非常简洁:将 hash 处理逻辑封装为独立函数,并在 DOM 就绪后立即执行一次,同时绑定到 hashchange 事件上。这样既覆盖了初始加载,也兼容后续手动跳转。
以下是优化后的完整代码(兼容 jQuery 3.x+):
$(function() {
// 核心处理函数:根据当前 hash 添加 open 类
function applyHashClass() {
const hash = window.location.hash;
// 确保 hash 存在且非空(如 #anchorX),避免匹配 # 或 ##
if (hash && hash.length > 1) {
// 直接使用 hash 字符串作为选择器(如 #anchorX),更精准、高效
$(hash).next('div').addClass('open');
}
}
// 页面加载完成时立即执行(处理初始 hash)
applyHashClass();
// 同时监听后续 hash 变更
$(window).on('hashchange', applyHashClass);
});? 关键改进说明:
? 补充建议:
通过这一模式,你的团队成员页面即可真正实现「分享即定位、打开即高亮」的无缝用户体验。