如何滚动到打开的div

时间:2013-03-19 18:06:27

标签: scroll

HTML:

<a class="targetLink" href="#">LINK1</a>
<div id="text1" style="display: none;">text1 div</div>

<a class="targetLink" href="#">LINK2</a>
<div id="text2" style="display: none;">text2 div</div>

<a class="targetLink" href="#">LINK3</a>
<div id="text3" style="display: none;">text3 div</div>

JS:

$("a.targetLink").toggle(function() {
    $(".open").slideUp(350);
    $(this).next("div").slideDown(350).addClass("open");
}, function() {
    $(this).next("div").slideUp(350).removeClass("open");
});

它以这种方式工作:当你按下类“targetLink”的链接时,它会在它下面打开一个DIV。现在我需要修改js代码:当我点击然后链接它滚动到该打开的div的开头。我怎样才能实现它?提前谢谢。

4 个答案:

答案 0 :(得分:0)

在要滚动到顶部的元素上使用scrollTop。 http://api.jquery.com/scrollTop/

示例:

$(this).next("div").scrollTop(0);

答案 1 :(得分:0)

我认为这就是你所需要的,也许更多:My jsfiddle。我不确定到目前为止你的工作是什么,但这可以做到我认为你想要的,而不需要额外的jquery插件等。

这是JS(检查jsfiddle for html):

$(".pop").hide();
$(".targetLink").on("click", function(e) {
    e.preventDefault();
    var n = $(this).next();
    if(!$(n).hasClass('open')){ 
        $(".open").removeClass('open').slideUp(200);
        $(n).addClass('open').slideDown(200); 
    } 
});


$(".nav").on("click", function(event){
    event.preventDefault(); 
    var dest=null;
    if(($($(this.hash)).offset().top) > ($(document).height()-$(window).height())){
        dest= $(document).height()-$(window).height();
    }else{
        dest=$($(this.hash)).offset().top;
    }
    $($(this.hash)).trigger("click");
    $('html,body').animate({scrollTop:dest}, 500, 'swing' );

});

答案 2 :(得分:0)

尝试这个非常棒且简单的jQuery插件 - https://github.com/Ashwell/jquery-scrollThis

答案 3 :(得分:0)

这应该做你要求的:

self.scrollToDiv = function scrollToDiv(element,minus){
    element = element.replace("link", "");
    if(minus==null){
        minus=0;
    }
    $('html,body').unbind().animate({scrollTop: $(element).offset().top+minus},'slow');
};