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;
    });
});

すべての値 (つまり、div id) が正しいことを chrome コンソールから確認できます。それでも、アニメーションはまったくありません。

ウェブサイトはこのようになります。

<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>

スクロールが必要な部分は、スクロール div であるコンテナー内にある 100% 幅/高さのパネルです。

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 に答える