【问题标题】:How do I scroll to the next article with the same class ON SCROLL如何滚动到具有相同课程的下一篇文章 ON SCROLL
【发布时间】:2018-03-01 14:25:34
【问题描述】:

我试图让用户在使用鼠标滚轮时自动滚动到下一篇文章。以下代码确实有效,但是,它只滚动到下一篇文章一次。见下图:

另外,我禁用了溢出,以便用户无法手动滚动

我有以下代码:

HTML

<article class="dienst-wrapper">
        ...
</article>


<article class="dienst-wrapper">
        ...
</article>

jQuery

function scrollToNextDiv(){
    var locatie = $('article.dienst-wrapper').next("article.dienst-wrapper");
    var offset = 0;
    var target = $(locatie).offset().top - offset;

    $('html, body').animate({scrollTop:target}, 750);
    event.preventDefault();
}

我该如何解决这个问题?谢谢!!

【问题讨论】:

    标签: jquery html scroll mousewheel


    【解决方案1】:

    如果您的文章在某个容器中,除了具有“dienst-wrapper”类的文章之外没有其他元素,您可以按照以下步骤操作:

    1. 在任何函数之外声明一些变量,例如:

      var articleIndex = 1;
      
    2. 然后将你的函数重命名为:

      function scrollToDiv(articleIndex) {...}
      
    3. 如下更改“位置”变量:

      var locatie = $('article.dienst-wrapper:nth-child(' + articleIndex + ')');
      
    4. 在检测滚动的函数中,检查它是向下滚动还是向上滚动(我不知道你是怎么做的,所以我跳过了代码),然后通过增加或减少 articleIndex 来触发函数,但请记住避免低于 1 且高于文章数量,代码应类似于:

      //inside scroll listener function
      if (scroll up) {
          if (articleIndex > 1) {
              scrollToDiv(--articleIndex);
          }
      } else {
          if (articleIndex < $('article.dienst-wrapper').length) {
              scrollToDiv(++articleIndex);
          }
      }
      

    如果您在文章容器内有一些其他元素,则上面的代码将不起作用。然后您可以按照以下步骤操作:

    1. 在任何函数之外声明一些变量,例如:

      var articleIndex = 0;
      
    2. 获取文章集合到一个数组(仍然在任何函数之外):

      var articlesCollection = $('article.dienst-wrapper');
      
    3. 然后将你的函数重命名为:

      function scrollToDiv(articleIndex) {...}
      
    4. 如下更改“位置”变量:

      var locatie = articlesCollection[articleIndex];
      
    5. 在检测滚动的函数中,检查它是向下滚动还是向上滚动(我不知道你是怎么做的,所以我跳过了代码),然后通过增加或减少 articleIndex 来触发函数,但请记住避免低于 1 且高于文章数量,代码应类似于:

      //inside scroll listener function
      if (scroll up) {
          if (articleIndex > 0) {
              scrollToDiv(--articleIndex);
          }
      } else {
          if (articleIndex < articlesCollection.length - 1) {
              scrollToDiv(++articleIndex);
          }
      }
      

    【讨论】:

    • 你是一个绝对的传奇!我的文章中确实有更多的元素,所以我不得不尝试你的第二个选项。它完美无缺!谢谢
    • 很高兴能帮到你:)
    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2021-10-17
    • 1970-01-01
    相关资源
    最近更新 更多