使用jQuery应用溢出值后scrollTop()无法正常工作?

时间:2014-08-13 21:50:50

标签: javascript jquery html css scroll

我正在使用Chris Coyier的插件(实际上,它是Devin Sturgeon的修改版本)来动画滚动到锚点链接:

// Easing for links pointing to anchors
$(document).ready(function() {
  $('a[href*=#]:not([href=#])').click(function() {
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
      var target = $(this.hash);
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
      if (target.length) {
        $('html,body').animate({
          scrollTop: target.offset().top
        }, 1000);
        return false;
      }
    }
  });
});

在我使用jQuery应用溢出值之前,它完美运行。例如,在关闭模态窗口后,这段代码负责隐藏水平溢出并将垂直溢出设置为auto:

$('.file-content a.close-reveal-modal').on('click', function() {
  $('html, body').css({
    'overflow-y' : 'auto',
    'overflow-x' : 'hidden'
  });
});

应用这些值后,动画滚动到锚点链接的插件将停止工作,单击它们不会产生任何结果。如果我在关闭模态时删除负责设置溢出的代码,那么Chris'插件每次都会像魅力一样。

为什么会这样?

非常感谢任何形式的帮助!

1 个答案:

答案 0 :(得分:2)

我不知道这是否对您有所帮助,但我发现这是提示http://upshots.org/javascript/jquery-get-real-height-of-hidden-or-overflow-hidden-elements

您是否尝试过调试?

因为我怀疑在你的例子中



target.offset().top



 返回零