JQuery 在滚动条上添加 class

JQuery add class on scroll

我使用此代码在滚动条上添加 class。活动 class 效果很好,但是 class 放置在页面上的位置不正确。我们在我们的网站上使用固定位置的主 header,当这个 header 变粘时,它位于我们的主 header 下方,位置也固定。活动 class 需要放在页面的前面,因为该部分的内容已经开始,当 class 被放置时。

HTML:

    <div style="height:57px;">
    <div class="menu-header-product">
    <div class="product-anchor-links-wrapper">
    <nav class="product-page-nav">
        <ul class="menu-header-top-product">
            <li class="menu-item-header-product"><a href="#description" class="product-nav-link">Productbeschrijving</a></li>
            <li class="menu-item-header-product"><a href="#additional" class="product-nav-link">Specificaties</a></li>
            <li class="menu-item-header-product"><a href="#reviews" class="product-nav-link">Reviews</a></li>
        </ul>
    </nav>
    </div>
    </div>
    </div>

<div class="content">  
<section id="description">
<div class="box-description"></div>
</section>

<section id="additional">
<div class="box-additional"></div>
</section>

<section id="reviews">
<div class="box-reviews"></div>
</section>
</div>

这段代码有什么问题:

<script>
$(window).scroll(function(){
  var sticky = $('.menu-header-product'),
      scroll = $(window).scrollTop();

  if (scroll >= 645) sticky.addClass('sticky');
  else sticky.removeClass('sticky');
});
$(window).scroll(function(){
  var sticky = $('.content'),
      scroll = $(window).scrollTop();

  if (scroll >= 645) sticky.addClass('sticky');
  else sticky.removeClass('sticky');
});
    $(document).ready(function () {
        $(document).on("scroll", onScroll);

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

            $('a').each(function () {
                $(this).removeClass('active');
            })
            $(this).addClass('active');

            var target = this.hash;
            $target = $(target);
            $('html, body').stop().animate({
            'scrollTop': $target.offset().top-130 /**just subtract the height of the fixed html part */
             }, 500, 'swing', function () {
                window.location.hash = target;
                $(document).on("scroll", onScroll);
            });
        });
    });

function onScroll(event){
        var scrollPosition = $(document).scrollTop();
        $('nav a').each(function () {
            var currentLink = $(this);
            var refElement = $(currentLink.attr("href"));
            if (refElement.position().top <= scrollPosition && refElement.position().top + refElement.height() > scrollPosition) {
                $('nav ul li a').removeClass("active");
                currentLink.addClass("active");
            }
            else{
                currentLink.removeClass("active");
            }
        });
    }
</script>

您刚刚忘记了标记中的结束 </section> 标记:

<section id="description">
 <div class="box-description"></div>
<section id="additional">
 <div class="box-additional"></div>
<section id="reviews">
 <div class="box-reviews"></div>

应该是

<section id="description">
 <div class="box-description"></div>
</section>
<section id="additional">
 <div class="box-additional"></div>
</section>
<section id="reviews">
 <div class="box-reviews"></div>
</section>