jQuery UI Vertical Tabs使页面滚动"坚持"

时间:2014-12-02 15:25:51

标签: javascript jquery jquery-ui jquery-ui-tabs jquery-tabs

我目前正在使用开箱即用的jQuery UI Vertical Tabs代码段,并且它如何影响整个页面滚动存在一个奇怪的问题。每次更改选项卡,然后尝试向上或向下滚动页面主页,它最终会“#34;坚持"在适当的位置,然后正常工作。您可以在此处查看效果:http://investors.realcrowd.com/tab-tester

不确定问题是什么或者甚至诊断它是什么...我可以添加任何代码片段来解决这个问题吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

不是100%确定这是否是解决方案但是在这一点上,我非常有信心。

检查源代码,在代码的最开始就有一个触发器。更具体地说,它位于:

<script>
$('body').bind('touchmove', function(e){
  e.preventDefault();
});
</script>
<script>
$(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;
      }
    }
  });
});

</script>

包括jQuery之后。

在这段代码中,你实际上有一个处理程序,只要调用非空锚就会触发。 经过几次检查后,此事件将调用此:

$('html,body').animate({
              scrollTop: target.offset().top
            }, 1000);

将执行1秒动画(1000毫秒),将视图滚动到所需目标的顶部偏移。在这一秒中,如果你要滚动,它将迫使你坚持在目标的偏移量的顶部,因此它会强迫你不要在别处滚动,而是在他想要的地方滚动。

要解决此问题,您可以将1000设置为1,或者只删除动画,即使实际滚动到目标的偏移量也是个好主意,因此只需将1000替换为1(或10或甚至100)都没问题。

希望这有帮助。