JQuery在滚动高度标题上添加类

时间:2015-01-17 16:29:24

标签: javascript jquery html

我使用此代码在滚动上添加一个类。活动类工作得很好,但放置类时页面上的位置不正确。我们在我们的网站上使用了一个固定位置的主标题,当这个标题变为粘性时,它位于我们的主标题下方也是固定的。滚动时,活动类需要在页面的前面放置,因为在放置类时,部分的内容已经开始。

由于某些原因,代码与同一页面上的另一个脚本冲突,我该如何解决这个问题?这两个脚本彼此相邻。

小提琴:http://jsfiddle.net/0knrcv3z/1/

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>

1 个答案:

答案 0 :(得分:0)

  

if( scroll&gt; = 50 )sticky.addClass(&#39; sticky&#39;);其他   sticky.removeClass(&#39;粘&#39); }); $(window).scroll(function(){var   sticky = $(&#39; .content&#39;),         scroll = $(window).scrollTop();

     

if( scroll&gt; = 12 )sticky.addClass(&#39; sticky&#39;);其他   sticky.removeClass(&#39;粘&#39); });

滚动时,

添加了sticke标题&#34; 50&#34;并删除它在12下滚动。只要编辑这些数字,只要它对你有好处;)