引导程序导航栏未使用平滑滚动脚本折叠

Bootstrap Navbar not collapsing with Smooth Scroll Script

本文关键字:滚动 脚本 折叠 平滑 未使用 导航 引导程序      更新时间:2023-10-08

我在一个单页网站上使用引导导航栏,每个锚都链接到页面上的一个部分。我使用一个非常简单的javascript来平滑滚动到每个部分,但这在某种程度上与导航栏的折叠功能相冲突——当我点击链接时,它不再折叠,这很烦人。我最初认为这可能是一个HTML问题(在这里解决:点击时Bootstrap Navbar Collapse没有关闭),但后来发现这是一个JS问题——有什么想法吗?

HTML:

<nav class="navbar navbar-default mainbar" role="navigation">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle hvr-bounce-to-bottom collapsed" data-toggle="collapse" data-target="#my-navbar-collapse">
          <span class="sr-only">Toggle navigation</span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
    </div>
    <div class="collapse navbar-collapse" id="my-navbar-collapse">
      <ul class="nav navbar-nav">
         <li><a data-toggle="collapse" data-target=".navbar-collapse" href="#link1" class="navelement">Link 1</a></li>
         <li><a data-toggle="collapse" data-target=".navbar-collapse" href="#link2" class="navelement">Link 2</a></li>
       </ul>
     </div>
</nav>

JAVASCRIPT:

var corp = $("html, body");
  $(".navelement").click(function() {
    var flag = $.attr(this, "href");
    corp.animate({
        scrollTop: $(schild).offset().top - 60
    }, 1600, function() {
        window.location.hash = flag;
    });
    return false;
});

您可以使用jQuery:而不是选择器实用程序

例如

$('a[href*=#]:not([href=#], [data-toggle=collapse])').click(function(){...})

或者在你的例子中:

var corp = $("html, body");
  $(".navelement:not([data-toggle=collapse])").click(function() {
    var flag = $.attr(this, "href");
    corp.animate({
        scrollTop: $(schild).offset().top - 60
    }, 1600, function() {
        window.location.hash = flag;
    });
    return false;
});