Javascript 显示/隐藏div-滚动至激活的div

Javascript 显示/隐藏div-滚动至激活的div,javascript,jquery,html,Javascript,Jquery,Html,我已经做了一些显示/隐藏功能。一次只能打开一个手风琴。我遇到的问题是,有时当一个新的打开时,文本会下降一半。所以它不会在手风琴的开始。我想把它滚动到打开的手风琴的顶部 下面是一个例子: 我一直在试图搞乱: $('html, body').animate({scrollTop: scroll_to}, 2000); 但是它没有给出正确的结果() 实现此功能的最佳方法是什么?您的第二种方法非常好。使用jQuery.position()作为第二个动画的目标,但更重要的是,您必须在第一个动画完成后在其

我已经做了一些显示/隐藏功能。一次只能打开一个手风琴。我遇到的问题是,有时当一个新的打开时,文本会下降一半。所以它不会在手风琴的开始。我想把它滚动到打开的手风琴的顶部

下面是一个例子:

我一直在试图搞乱:

$('html, body').animate({scrollTop: scroll_to}, 2000);
但是它没有给出正确的结果()


实现此功能的最佳方法是什么?

您的第二种方法非常好。使用jQuery.position()作为第二个动画的目标,但更重要的是,您必须在第一个动画完成后在其回调中执行此操作:

$('.showBtn').click(function() {  
  if ($(this).hasClass('active')) {    
    $(this).removeClass('active');
    $('.hideme').slideUp();
  } else {
    $('.hideme').slideUp();
    $('.showBtn').removeClass('active');
    $(this).addClass('active');
    $(this).next().filter('.hideme').slideDown(400, function() {
      $('html, body').animate({scrollTop: $(this).position().top}, 400);
    });
  }
});

当我把它放在代码中时,它使它返回到页面顶部。然而,我把偏移量放在了位置上,它突然按预期工作了!谢谢你!我的结论是:还有你的JSFIDLE链接到另一个。。它使用scrollIntoView。。那是插件吗?对不起,我把小提琴弄错了。我丢了一个带密码的。您的解决方案是好的,但是两个连续发生的动画不是最好的。重新思考一下,这是一个带有一个动画的版本。如果从当前打开的菜单的下方或上方选择了新菜单,则此操作将设置躯干滚动位置的垂直偏移动画(与菜单内容打开动画平行),使其位于选定菜单内容的顶部。再次感谢你!我不完全确定这个是怎么工作的。。但这个位置仍然不起作用,但一旦我把它改成抵消,它就起作用了。IF语句在做什么?为什么要查看差异是否小于0?嗯,它检查身体位置是否需要向上或向下滚动,因为您可以单击打开的元素下方或上方的新元素。不管怎样,很高兴我能帮上忙。
$('html, body').animate({scrollTop: scroll_to}, 2000);
$('.showBtn').click(function() {  
  if ($(this).hasClass('active')) {    
    $(this).removeClass('active');
    $('.hideme').slideUp();
  } else {
    $('.hideme').slideUp();
    $('.showBtn').removeClass('active');
    $(this).addClass('active');
    $(this).next().filter('.hideme').slideDown(400, function() {
      $('html, body').animate({scrollTop: $(this).position().top}, 400);
    });
  }
});