在滚动停止之前禁用hashchange

时间:2013-05-08 08:13:45

标签: jquery hashchange

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

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

2 个答案:

答案 0 :(得分:1)

所以你应该使用

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

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

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

答案 1 :(得分:0)

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

$('a').click(function () { return false; }); // disables
$('a').unbind('click'); // enables them again