javascript - jQuery 平滑滚动到 anchor

标签 javascript jquery html css mousewheel

我使用 jQuery mousewheel 扩展编写了一个相当简单的平滑滚动功能,并且以前没有使用 $.mousewheel 的经验,我遇到了一个问题。

基本上,一旦 south delta 被调用,我就使用 scrollTop 调用一个 $.animate 函数到一个类 .anchor

HTML(针对问题进行了简化):

<div id="static-section" class="anchor"></div> <!-- width: 100%; height: 258px -->
<div id="alt-section" class="anchor"></div> <!-- width: 100%; height: 346px -->

jQuery:

$(document).ready(function() {
    $("body").mousewheel(function(event, delta, deltaX, deltaY) {
        if( delta > 0 ) {
            console.log("North: " + delta);
        }

        else if( delta < 0 ) {
            console.log("South: " + delta);
            // ANIMATE TO ANCHOR FUNCTION
            $("html,body").animate({scrollTop: $(".anchor").offset().top}, "slow");
        }

        return false;
    });
});

所以:我的问题是它只对.anchor第一个 实例进行动画处理(即#static- section) 我试过 scrollTop: $(".anchor").next().top 这显然不起作用,虽然没有出现错误,但它仍然只动画到第一个例子。我的第一个猜测是使用 for 循环,我试过了,但它没有用(也没有错误。)我从来没有真正使用过 for 循环之前,所以我不确定我所做的是否正确。任何帮助将不胜感激!

注意:jsFiddle(与我的网站具有相同的代码)并没有描述我已经完成的相同的事情,所以没有可用的现场演示。如果大家需要,我会根据要求提供网址。 :-)

最佳答案

像这样的东西将遍历 .anchor 标签:

$(document).ready(function() {
    var $anchor = $('.anchor');
    $("body").mousewheel(function(event, delta, deltaX, deltaY) {
        if( delta > 0 ) {
            console.log("North: " + delta);
        }

        else if( delta < 0 ) {
            console.log("South: " + delta);
            // ANIMATE TO ANCHOR FUNCTION
            $("html,body").animate({scrollTop: $anchor.offset().top}, "slow");
            $anchor = $anchor.next('.anchor');
        }

        return false;
    });
});

关于javascript - jQuery 平滑滚动到 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613475/

相关文章:

jquery - ajax超时回调函数

javascript - 在 Rails 5 中使用 'noty' js 库

javascript - 为什么 .remove() 在回调函数中不起作用?

javascript - 如何访问 Mac native 对话框

javascript - 通过 React Native 函数传递 Promise

javascript - 共享点|根据相同的组合框状态更改组合框选项

jquery - JqPlot : Set a fix height value for the graph area not including y axe labels

html - 如何在 html 中显示 ► 播放(向前)或向右实心箭头符号?

html - 为什么百分比填充/边距不适用于 Firefox 和 Edge 中的 flex 元素?

php - 使用递归函数在列表中将 SQL 帖子相互分组