0

我目前正在尝试使用 jquery 滚动到某个 div id。

代码如下。

jQuery(document).ready(function($){
    var prevScrollTop = 0;
    var $scrollDiv    = jQuery('div#container');
    var $currentDiv   = $scrollDiv.children('div:first-child');

    var $sectionid    = 1;
    var $numsections  = 5;

    $scrollDiv.scroll(function(eventObj)
    {
        var curScrollTop = $scrollDiv.scrollTop();
        if (prevScrollTop < curScrollTop)
        {
        // Scrolling down:
            if ($sectionid+1 > $numsections) {
                console.log("End Panel Reached");
            }
            else {
                $currentDiv = $currentDiv.next().scrollTo();
                console.log("down");
                console.log($currentDiv);
                $sectionid=$sectionid+1;
                console.log($currentDiv.attr('id'));
                var divid =$currentDiv.attr('id');
                jQuery('html, body').animate({scrollTop:jQuery('#'+divid).position().top}, 'slow');
                }
        }
        else if (prevScrollTop > curScrollTop)
        {
        // Scrolling up:
            if ($sectionid-1 == 0) {
                console.log("Top Panel Reached");
            }
            else {
                $currentDiv = $currentDiv.prev().scrollTo();
                console.log("up");
                console.log($currentDiv);
                $sectionid=$sectionid-1;
                var divid =$currentDiv.attr('id');
                jQuery('html, body').animate({scrollTop:jQuery('#'+divid).position().top}, 'slow');

                }
        }
        prevScrollTop = curScrollTop;
    });
});

我可以从 chrome 控制台验证所有值(即 div id)是否正确。然而,根本没有动画。

网站是这样的。

<div id="header">
<!-- Floating Header -->
</div>
<div id="container">
    <div id="panel1">
        <!--content of panel1 -->
    </div>
    <div id="panel2">
       <!--content of panel2 -->
    </div>
    <div id="panel3">
        <!--content of panel3 -->
    </div>
</div>

需要滚动的部分是 100% 宽度/高度的面板,它们位于容器内部,是一个滚动的 div。

4

1 回答 1

0

解决它。

仅供参考,因为 div 在容器 div 中...

jQuery('html, body').animate({scrollTop:jQuery('#'+divid).position().top}, 'slow');

应该

jQuery('#container').animate({scrollTop:jQuery('#'+divid).position().top}, 'slow');
于 2012-10-06T20:18:14.433 回答