禁用非锚点哈希链接上的平滑滚动?

时间:2018-06-18 03:08:46

标签: javascript jquery html

我有一些jquery用于平滑滚动:

$(document).on('click', 'a[href^="#"]', function (event) {
    event.preventDefault();

    $('html, body').animate({
        scrollTop: $($.attr(this, 'href')).offset().top
    }, 1400);
});

哪个工作正常,但我在页面上有一些使用哈希链接的选项卡。单击每个选项卡时,页面将滚动到屏幕顶部。

有没有办法让这个平滑的滚动工作,只有当一个特定的锚被添加到哈希(比如/#features)而不工作时它只是一个哈希(比如/#)

1 个答案:

答案 0 :(得分:0)

您可以添加:not() selector以消除href="#"触发click事件。

$(document).on('click', 'a[href^="#"]:not([href=#])', function(event) {
  console.log("Clicked");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Hash Only</a>
<a href="#Anchor1">Anchor 1</a>
<a href="#Anchor2">Anchor 2</a>