javascript - 当我想平滑滚动到这些部分时,JQuery 不工作

标签 javascript jquery html

我希望在单击链接后平滑滚动到页面上的部分。我找到了制作方法,但它对我不起作用,我不明白为什么。

这是我的带有链接和部分的 html 代码:

    <header class="d-flex main-header">
        <div class="container-fluid header-container">
                <nav class="navbar navbar-toggleable-sm navbar-inverse main-navigation">
                    <h1 class="mr-auto"><a href="index.html"><img src="images/site_logo.png" alt="logo"></a></h1>
                        <button class="navbar-toggler navbar-toggler-right menu-button" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
                            <span class="navbar-toggler-icon"></span>
                        </button>
                    <div class="collapse navbar-collapse" id="navbarCollapse">
                        <ul class="navbar-nav ml-md-auto">
                            <li class="nav-item">
                                <a class="nav-link" href="#about">About</a>
                            </li>
                            <li class="nav-item">
                                <a class="nav-link" href="#portfolio">Portfolio</a>
                            </li>
                            <li class="nav-item">
                                <a class="nav-link" href="#team">Team</a>
                            </li>
                            <li class="nav-item">
                                <a class="nav-link" href="#contact">Contact</a>
                            </li>
                        </ul>
                    </div>
                </nav>
            </div>
    </header>

<!--Sections-->

<section class="d-flex about" id="about">
  <!--Content-->
</section>


<section class="d-flex portfolio" id="portfolio">
  <!--Content-->
</section>

<section class="d-flex team" id="team">
  <!--Content-->
</section>

<section class="d-flex contact" id="contact">
  <!--Content-->
</section>

这里是我如何在 </body> 之前连接 jquery :

<script
        src="https://code.jquery.com/jquery-3.2.1.js"
        integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
        crossorigin="anonymous"></script>

这里是我如何在 <head></head> 中连接我的脚本:

<script src="js/script.js"></script>

这里是 script.js 的代码:

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

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

最佳答案

引用你所说的话:

  1. “这里是我如何在 </body> 之前连接 jquery”
  2. “这是我如何在 <head></head> 中连接我的脚本”

所以这里的问题是 script.js<head>依赖于 jQuery,但 jQuery 仅包含在 <body> 的末尾.

您应该更改您的代码,以便在 之前 包含 jQuery script.js :

    ...
    <script src="https://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"></script>
    <script src="js/script.js"></script>
</body>

关于javascript - 当我想平滑滚动到这些部分时,JQuery 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47490041/

相关文章:

JavaScript json 回调

javascript - jquery 中每个单词的字符应大写

javascript - Magento – 优惠券代码提交按钮不起作用

jquery - div 中的流体跨度宽度

javascript - 使用 d3 中的相邻数据值

javascript - jQuery preventDefault 在 POST 之前进行验证

javascript - 在每个文本字段后插入文本区域

html - 显示跨度 inline-block 与 inline 相结合

javascript - DataTables 不会加载 AJAX 和 MYSQL

html - 字符 "›"(›) 在 IE11 中打破 Angular