通过检查URL,然后将适当的链接设置为active,可以很容易地实现这一点。
这可以通过以下方式实现。。。
var hash = window.location.hash.substr(1); // Get the text after the hash
$(\'a[href="#\' + hash + \'"]\').addClass(\'active\'); // Set the correct link to active
然而,有一些事情需要考虑。有人可以从已经有哈希的链接访问此页面,因此需要在页面加载时运行代码。此外,哈希值可以在页面内更改,因此每次单击带有#的链接时,我们都需要进行检查。
这是我的工作/测试示例。。。
$(document).ready(function () {
function setActive() {
setTimeout(function () {
var hash = window.location.hash.substr(1);
if (hash) {
$(\'a[href*="#"]\').removeClass(\'active\');
$(\'a[href="#\' + hash + \'"]\').addClass(\'active\');
}
}, 15);
}
setActive(); // On Page Load
$(\'a[href*="#"]\').click(function () { // On link click
setActive();
});
});
Note: 之所以使用setTimeout,是因为从单击链接到更新实际URL都有一点延迟
Note 2: 这将直接在锚点上设置和取消设置活动类。您可能希望在父元素(如li或div)上设置类。您可以通过添加来实现这一点。添加和删除类选择器后的parent()。
例如
$(\'a[href*="#"]\').parent().removeClass(\'active\');
$(\'a[href="#\' + hash + \'"]\').parent().addClass(\'active\');