使用Bootstrap ScrollSpy滚动到NEXT / PREV按钮

时间:2014-09-10 18:32:46

标签: javascript jquery twitter-bootstrap scrollspy

我正在寻找创建下一页和上一页按钮的答案,这些按钮通过页面上的锚点,但无法找到我需要的东西。这个可能接近我想要的,所以我决定用它作为起点:How can I make a link go to the next anchor on the page without knowing anchor name?

我用这个答案中提出的概念创建了一个小提琴,并试图让它与bootstrap的scrollspy(检测当前部分和锚点)一起工作。

我已经做到了这一点:http://jsfiddle.net/gukne0oL/2/

$('.next').click(function (e) {
    e.preventDefault();
    var current_anchor = $('li.active a');
    var next_anchor = current.next('li a');
    $('body').animate({
        scrollTop: next_anchor.offset().top
    });
})

$('.previous').click(function (e) {
    e.preventDefault();
    var current_anchor = $('li.active a');
    var previous_anchor = current.prev('li a');
    $('body').animate({
        scrollTop: previous_anchor.offset().top
    });
})

原始答案以<a>标记为目标,但在bootstrap的scrollspy中,它会将active类添加到包含<li>标记的<a>标记中。所以我相应改变了......我觉得它很接近?但我无法告诉......

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:3)

定位活动的li,找到上一个/下一个li,然后深入查看锚点。

http://jsfiddle.net/gukne0oL/9/

// Activate bootstrap scrollspy
$('body').scrollspy({ 
    target: '.navbar'
})

$('.next').click(function (e) {  
    var next = $('.navbar ul li.active').next().find('a').attr('href');
    $('html, body').animate({
        scrollTop: $(next).offset().top
    }, 500);
})

$('.previous').click(function (e) {
    var prev = $('.navbar ul li.active').prev().find('a').attr('href');
    $('html, body').animate({
        scrollTop: $(prev).offset().top
    }, 500);
})