【问题标题】:Disable hashchange until scrollling has stopped禁用 hashchange 直到滚动停止
【发布时间】:2013-05-08 08:13:45
【问题描述】:

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

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

【问题讨论】:

  • 如果你能做一个小小提琴会很有帮助
  • 这个$('[data-rel="'+id+'"]') 超级慢
  • 所以它通过动画跳到点击的部分?

标签: jquery hashchange


【解决方案1】:

所以你应该使用

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

并运行您自己的代码。如果我理解正确,这应该可以工作?

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 2012-10-31
      • 2012-05-16
      • 2019-03-07
      • 1970-01-01
      • 2014-10-27
      • 2017-08-20
      相关资源
      最近更新 更多