1

我有一个带导航的单页网站,允许用户滚动到页面的不同部分。当用户单击链接时,url 中的哈希值也会发生变化,当用户滚动页面时,哈希值也会发生变化。我唯一的问题是,如果用户位于顶部并单击链接以转到页脚,则哈希会随着它跳过不同部分而发生变化,因此在最终到达页脚之前快速突出显示具有所选状态的导航链接。有没有办法可以在页面滚动到页脚时禁用 hashchange 功能?

$(window).on('hashchange', function(){
   var id = window.location.hash.substring(1);
   $('#header ul li').removeClass('selected');
   $('[data-rel="'+id+'"]').addClass('selected');
});
4

2 回答 2

1

所以你应该使用

$('a').click(function (e) {
    e.preventDefault();
}

并运行您自己的代码。如果我理解正确,这应该有效吗?

http://jsfiddle.net/FnfgJ/1/

于 2013-05-08T08:58:54.663 回答
0

你的回答是否定的。如果用户想要更改 url 的哈希值,他将始终能够。您可以做的是禁用所有链接:

$('a').click(function () { return false; }); // disables
$('a').unbind('click'); // enables them again
于 2013-05-08T08:21:04.677 回答