单击相应元素时,JQuery平滑滚动到一个元素

时间:2014-01-07 10:58:34

标签: jquery scrolltop

我希望能够在两个元素之间平滑滚动。我一直在使用这个脚本在链接和锚点之间滚动。我希望重新使用这个脚本,以允许根据每个元素的'id'的一部分平滑滚动各种元素类型。


这是原始剧本

JQuery smooth scrolling when clicking an anchor link - 见下文

$(document).ready(function(e) {
    //SCROLL TO ANCHOR TAG
    var $root = $('html, body');

    $('a').click(function() {
            $root.animate({
                scrollTop: $( $.attr(this, 'href') ).offset().top
            }, 2000);
        return false;
    });
});

这是我要去的地方

我想修改脚本,以便在点击spandiv然后滚动到具有设置ID的li之间起作用:

<ul>
    <li id="1">frame 1 - <span id="goto2" class="goto">go to frame 2</span></li>
    <li id="2">frame 2 - <span id="goto3" class="goto">go to frame 3</span></li>
    <li id="3">frame 3 - <span id="goto4" class="goto">go to frame 4</span></li>
    <li id="4">frame 4 - <span id="goto5" class="goto">go to frame 5</span></li>
    <li id="5">frame 5 - <span id="goto1" class="goto">go to frame 1</span></li>
</ul>

以下是我修改上述脚本的地方。

$(document).ready(function(e) {
    //SCROLL TO ANCHOR TAG
    var $root = $('html, body');

    var $gotoid = $('.goto').attr('id');
    var $justid = $gotoid.replace('goto','');


    $('.goto').click(function() {
        console.log($gotoid);
        console.log($justid);
            $root.animate({
                scrollTop: $( $.attr(this, 'href') ).offset().top
            }, 2000);
        return false;
    });
});

我无法弄清楚如何将scrollTop设置为在spanli之间使用相应的ID。我已经离开了原始剧本中的scrollTop线。

非常感谢任何帮助

由于

1 个答案:

答案 0 :(得分:2)

这里是html

<ul>
    <li id="li1">frame 1 - <span id="goto2" class="goto">go to frame 2</span></li>
    <li id="li2">frame 2 - <span id="goto3" class="goto">go to frame 3</span></li>
    <li id="li3">frame 3 - <span id="goto4" class="goto">go to frame 4</span></li>
    <li id="li4">frame 4 - <span id="goto5" class="goto">go to frame 5</span></li>
    <li id="li5">frame 5 - <span id="goto1" class="goto">go to frame 1</span></li>
</ul>
<div id="1">1</div><div id="2">2</div><div id="3">3</div><div id="4">4</div><div id="5">5</div>

这里有一点css用于视觉反馈

div{
    height:600px;
    background-color:#aaa;
    margin-top:20px;
}

这是固定的JS

$(document).ready(function(e) {
//SCROLL TO ANCHOR TAG
var $root = $('html, body');

    $('.goto').click(function() {
        var $gotoid = $(this).prop('id');
        var $justid = $gotoid.replace('goto','');
        console.log($gotoid);
        console.log($justid);
        if(typeof $("#"+$justid) != undefined){  // test if target exists
            $root.animate({
                scrollTop: $("#"+$justid).offset().top
            }, 2000);
        }
        return false;
    });
});

然后,小提琴

http://jsfiddle.net/DyH8S/

随意请求解释