如何使用相同的类ON SCROLL滚动到下一篇文章

问题描述 投票:1回答:1

我试图让用户在使用鼠标滚轮时自动滚动到下一篇文章。以下代码可以工作,但是,它只滚动到下一篇文章ONCE。见下图:

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

enter image description here

我有以下代码:

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 html5 scroll mousewheel
1个回答
2
投票

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

  1. 在任何函数之外声明一些变量,例如: var articleIndex = 1;
  2. 然后将您的函数重命名为: function scrollToDiv(articleIndex) {...}
  3. 更改您的“locatie”变量如下: 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. 更改您的“locatie”变量如下: 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); } }
© www.soinside.com 2019 - 2024. All rights reserved.